]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/proc-events.c
Automatic date update in version.in
[thirdparty/binutils-gdb.git] / gdb / proc-events.c
CommitLineData
44122162 1/* Machine-independent support for Solaris /proc (process file system)
c18c06be 2
b811d2c2 3 Copyright (C) 1999-2020 Free Software Foundation, Inc.
c18c06be 4
0fda6bd2
JM
5 Written by Michael Snyder at Cygnus Solutions.
6 Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
7
c18c06be
MK
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
a9762ec7 10 the Free Software Foundation; either version 3 of the License, or
c18c06be
MK
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
a9762ec7 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c18c06be
MK
20
21/* Pretty-print "events of interest".
22
23 This module includes pretty-print routines for:
24 * faults (hardware exceptions)
25 * signals (software interrupts)
26 * syscalls
27
28 FIXME: At present, the syscall translation table must be
29 initialized, which is not true of the other translation tables. */
0fda6bd2
JM
30
31#include "defs.h"
32
0fda6bd2 33#define _STRUCTURED_PROC 1
0fda6bd2 34
0fda6bd2
JM
35#include <sys/types.h>
36#include <sys/procfs.h>
37#include <sys/syscall.h>
38#include <sys/fault.h>
39
a0911fd0
MR
40#include "proc-utils.h"
41
c18c06be
MK
42/* Much of the information used in the /proc interface, particularly
43 for printing status information, is kept as tables of structures of
44 the following form. These tables can be used to map numeric values
45 to their symbolic names and to a string that describes their
46 specific use. */
0fda6bd2 47
c18c06be
MK
48struct trans
49{
50 int value; /* The numeric value. */
995816ba
PA
51 const char *name; /* The equivalent symbolic value. */
52 const char *desc; /* Short description of value. */
0fda6bd2 53};
c18c06be 54\f
0fda6bd2 55
c18c06be 56/* Pretty print syscalls. */
0fda6bd2 57
c18c06be 58/* Syscall translation table. */
0fda6bd2 59
c18c06be 60#define MAX_SYSCALLS 262 /* Pretty arbitrary. */
995816ba 61static const char *syscall_table[MAX_SYSCALLS];
0fda6bd2 62
a0911fd0 63static void
0fda6bd2
JM
64init_syscall_table (void)
65{
0fda6bd2 66 syscall_table[SYS_accept] = "accept";
c18c06be 67#ifdef SYS_access
0fda6bd2
JM
68 syscall_table[SYS_access] = "access";
69#endif
0fda6bd2 70 syscall_table[SYS_acct] = "acct";
44122162 71 syscall_table[SYS_acctctl] = "acctctl";
0fda6bd2 72 syscall_table[SYS_acl] = "acl";
44122162
RO
73#ifdef SYS_adi
74 syscall_table[SYS_adi] = "adi";
0fda6bd2 75#endif
0fda6bd2 76 syscall_table[SYS_adjtime] = "adjtime";
0fda6bd2 77 syscall_table[SYS_alarm] = "alarm";
0fda6bd2 78 syscall_table[SYS_auditsys] = "auditsys";
44122162 79 syscall_table[SYS_autofssys] = "autofssys";
0fda6bd2 80 syscall_table[SYS_bind] = "bind";
44122162 81 syscall_table[SYS_brand] = "brand";
0fda6bd2 82 syscall_table[SYS_brk] = "brk";
0fda6bd2 83 syscall_table[SYS_chdir] = "chdir";
c18c06be 84#ifdef SYS_chmod
0fda6bd2
JM
85 syscall_table[SYS_chmod] = "chmod";
86#endif
c18c06be 87#ifdef SYS_chown
0fda6bd2
JM
88 syscall_table[SYS_chown] = "chown";
89#endif
0fda6bd2 90 syscall_table[SYS_chroot] = "chroot";
44122162 91 syscall_table[SYS_cladm] = "cladm";
0fda6bd2 92 syscall_table[SYS_clock_getres] = "clock_getres";
0fda6bd2 93 syscall_table[SYS_clock_gettime] = "clock_gettime";
0fda6bd2 94 syscall_table[SYS_clock_settime] = "clock_settime";
0fda6bd2 95 syscall_table[SYS_close] = "close";
0fda6bd2 96 syscall_table[SYS_connect] = "connect";
0fda6bd2 97 syscall_table[SYS_context] = "context";
44122162
RO
98 syscall_table[SYS_corectl] = "corectl";
99 syscall_table[SYS_cpc] = "cpc";
c18c06be 100#ifdef SYS_creat
0fda6bd2
JM
101 syscall_table[SYS_creat] = "creat";
102#endif
c18c06be 103#ifdef SYS_creat64
0fda6bd2
JM
104 syscall_table[SYS_creat64] = "creat64";
105#endif
0fda6bd2 106 syscall_table[SYS_door] = "door";
c18c06be 107#ifdef SYS_dup
0fda6bd2
JM
108 syscall_table[SYS_dup] = "dup";
109#endif
c18c06be 110#ifdef SYS_evsys
0fda6bd2
JM
111 syscall_table[SYS_evsys] = "evsys";
112#endif
c18c06be 113#ifdef SYS_evtrapret
0fda6bd2
JM
114 syscall_table[SYS_evtrapret] = "evtrapret";
115#endif
44122162 116 syscall_table[SYS_exacctsys] = "exacctsys";
c18c06be 117#ifdef SYS_exec
0fda6bd2
JM
118 syscall_table[SYS_exec] = "exec";
119#endif
0fda6bd2 120 syscall_table[SYS_execve] = "execve";
0fda6bd2 121 syscall_table[SYS_exit] = "exit";
44122162
RO
122#ifdef SYS_faccessat
123 syscall_table[SYS_faccessat] = "faccessat";
0fda6bd2 124#endif
0fda6bd2 125 syscall_table[SYS_facl] = "facl";
0fda6bd2 126 syscall_table[SYS_fchdir] = "fchdir";
c18c06be 127#ifdef SYS_fchmod
0fda6bd2
JM
128 syscall_table[SYS_fchmod] = "fchmod";
129#endif
44122162
RO
130#ifdef SYS_fchmodat
131 syscall_table[SYS_fchmodat] = "fchmodat";
132#endif
c18c06be 133#ifdef SYS_fchown
0fda6bd2
JM
134 syscall_table[SYS_fchown] = "fchown";
135#endif
44122162
RO
136#ifdef SYS_fchownat
137 syscall_table[SYS_fchownat] = "fchownat";
0fda6bd2 138#endif
44122162 139 syscall_table[SYS_fchroot] = "fchroot";
0fda6bd2 140 syscall_table[SYS_fcntl] = "fcntl";
0fda6bd2 141 syscall_table[SYS_fdsync] = "fdsync";
c18c06be 142#ifdef SYS_fork1
0fda6bd2
JM
143 syscall_table[SYS_fork1] = "fork1";
144#endif
c18c06be 145#ifdef SYS_forkall
0fda6bd2
JM
146 syscall_table[SYS_forkall] = "forkall";
147#endif
44122162
RO
148#ifdef SYS_forksys
149 syscall_table[SYS_forksys] = "forksys";
150#endif
0fda6bd2 151 syscall_table[SYS_fpathconf] = "fpathconf";
44122162
RO
152#ifdef SYS_frealpathat
153 syscall_table[SYS_frealpathat] = "frealpathat";
154#endif
155#ifdef SYS_fsat
156 syscall_table[SYS_fsat] = "fsat";
0fda6bd2 157#endif
c18c06be 158#ifdef SYS_fstat
0fda6bd2
JM
159 syscall_table[SYS_fstat] = "fstat";
160#endif
c18c06be 161#ifdef SYS_fstat64
0fda6bd2
JM
162 syscall_table[SYS_fstat64] = "fstat64";
163#endif
44122162
RO
164#ifdef SYS_fstatat
165 syscall_table[SYS_fstatat] = "fstatat";
0fda6bd2 166#endif
44122162
RO
167#ifdef SYS_fstatat64
168 syscall_table[SYS_fstatat64] = "fstatat64";
0fda6bd2 169#endif
44122162
RO
170 syscall_table[SYS_fstatfs] = "fstatfs";
171 syscall_table[SYS_fstatvfs] = "fstatvfs";
0fda6bd2 172 syscall_table[SYS_fstatvfs64] = "fstatvfs64";
c18c06be 173#ifdef SYS_fxstat
0fda6bd2
JM
174 syscall_table[SYS_fxstat] = "fxstat";
175#endif
44122162 176 syscall_table[SYS_getcwd] = "getcwd";
0fda6bd2 177 syscall_table[SYS_getdents] = "getdents";
0fda6bd2 178 syscall_table[SYS_getdents64] = "getdents64";
0fda6bd2 179 syscall_table[SYS_getgid] = "getgid";
0fda6bd2 180 syscall_table[SYS_getgroups] = "getgroups";
0fda6bd2 181 syscall_table[SYS_getitimer] = "getitimer";
44122162 182 syscall_table[SYS_getloadavg] = "getloadavg";
0fda6bd2 183 syscall_table[SYS_getmsg] = "getmsg";
44122162 184 syscall_table[SYS_getpagesizes] = "getpagesizes";
0fda6bd2 185 syscall_table[SYS_getpeername] = "getpeername";
0fda6bd2 186 syscall_table[SYS_getpid] = "getpid";
0fda6bd2 187 syscall_table[SYS_getpmsg] = "getpmsg";
44122162
RO
188#ifdef SYS_getrandom
189 syscall_table[SYS_getrandom] = "getrandom";
0fda6bd2 190#endif
0fda6bd2 191 syscall_table[SYS_getrlimit] = "getrlimit";
0fda6bd2 192 syscall_table[SYS_getrlimit64] = "getrlimit64";
0fda6bd2 193 syscall_table[SYS_getsockname] = "getsockname";
0fda6bd2 194 syscall_table[SYS_getsockopt] = "getsockopt";
0fda6bd2 195 syscall_table[SYS_gettimeofday] = "gettimeofday";
0fda6bd2 196 syscall_table[SYS_getuid] = "getuid";
0fda6bd2 197 syscall_table[SYS_gtty] = "gtty";
0fda6bd2 198 syscall_table[SYS_hrtsys] = "hrtsys";
0fda6bd2 199 syscall_table[SYS_inst_sync] = "inst_sync";
0fda6bd2 200 syscall_table[SYS_install_utrap] = "install_utrap";
0fda6bd2 201 syscall_table[SYS_ioctl] = "ioctl";
44122162
RO
202#ifdef SYS_issetugid
203 syscall_table[SYS_issetugid] = "issetugid";
0fda6bd2 204#endif
0fda6bd2 205 syscall_table[SYS_kaio] = "kaio";
0fda6bd2 206 syscall_table[SYS_kill] = "kill";
44122162 207 syscall_table[SYS_labelsys] = "labelsys";
c18c06be 208#ifdef SYS_lchown
0fda6bd2
JM
209 syscall_table[SYS_lchown] = "lchown";
210#endif
44122162 211 syscall_table[SYS_lgrpsys] = "lgrpsys";
c18c06be 212#ifdef SYS_link
0fda6bd2
JM
213 syscall_table[SYS_link] = "link";
214#endif
44122162
RO
215#ifdef SYS_linkat
216 syscall_table[SYS_linkat] = "linkat";
0fda6bd2 217#endif
44122162 218 syscall_table[SYS_listen] = "listen";
0fda6bd2 219 syscall_table[SYS_llseek] = "llseek";
0fda6bd2 220 syscall_table[SYS_lseek] = "lseek";
c18c06be 221#ifdef SYS_lstat
0fda6bd2
JM
222 syscall_table[SYS_lstat] = "lstat";
223#endif
c18c06be 224#ifdef SYS_lstat64
0fda6bd2
JM
225 syscall_table[SYS_lstat64] = "lstat64";
226#endif
0fda6bd2 227 syscall_table[SYS_lwp_cond_broadcast] = "lwp_cond_broadcast";
0fda6bd2 228 syscall_table[SYS_lwp_cond_signal] = "lwp_cond_signal";
0fda6bd2 229 syscall_table[SYS_lwp_cond_wait] = "lwp_cond_wait";
0fda6bd2 230 syscall_table[SYS_lwp_continue] = "lwp_continue";
0fda6bd2 231 syscall_table[SYS_lwp_create] = "lwp_create";
44122162 232 syscall_table[SYS_lwp_detach] = "lwp_detach";
0fda6bd2 233 syscall_table[SYS_lwp_exit] = "lwp_exit";
0fda6bd2 234 syscall_table[SYS_lwp_info] = "lwp_info";
c18c06be 235#ifdef SYS_lwp_kill
0fda6bd2
JM
236 syscall_table[SYS_lwp_kill] = "lwp_kill";
237#endif
c18c06be 238#ifdef SYS_lwp_mutex_lock
0fda6bd2
JM
239 syscall_table[SYS_lwp_mutex_lock] = "lwp_mutex_lock";
240#endif
44122162
RO
241 syscall_table[SYS_lwp_mutex_register] = "lwp_mutex_register";
242 syscall_table[SYS_lwp_mutex_timedlock] = "lwp_mutex_timedlock";
0fda6bd2 243 syscall_table[SYS_lwp_mutex_trylock] = "lwp_mutex_trylock";
0fda6bd2 244 syscall_table[SYS_lwp_mutex_unlock] = "lwp_mutex_unlock";
44122162
RO
245 syscall_table[SYS_lwp_mutex_wakeup] = "lwp_mutex_wakeup";
246#ifdef SYS_lwp_name
247 syscall_table[SYS_lwp_name] = "lwp_name";
0fda6bd2 248#endif
44122162 249 syscall_table[SYS_lwp_park] = "lwp_park";
0fda6bd2 250 syscall_table[SYS_lwp_private] = "lwp_private";
44122162 251 syscall_table[SYS_lwp_rwlock_sys] = "lwp_rwlock_sys";
0fda6bd2 252 syscall_table[SYS_lwp_self] = "lwp_self";
0fda6bd2 253 syscall_table[SYS_lwp_sema_post] = "lwp_sema_post";
44122162 254 syscall_table[SYS_lwp_sema_timedwait] = "lwp_sema_timedwait";
0fda6bd2 255 syscall_table[SYS_lwp_sema_trywait] = "lwp_sema_trywait";
c18c06be 256#ifdef SYS_lwp_sema_wait
0fda6bd2
JM
257 syscall_table[SYS_lwp_sema_wait] = "lwp_sema_wait";
258#endif
44122162
RO
259 syscall_table[SYS_lwp_sigmask] = "lwp_sigmask";
260#ifdef SYS_lwp_sigqueue
261 syscall_table[SYS_lwp_sigqueue] = "lwp_sigqueue";
0fda6bd2 262#endif
0fda6bd2 263 syscall_table[SYS_lwp_suspend] = "lwp_suspend";
0fda6bd2 264 syscall_table[SYS_lwp_wait] = "lwp_wait";
c18c06be 265#ifdef SYS_lxstat
0fda6bd2
JM
266 syscall_table[SYS_lxstat] = "lxstat";
267#endif
0fda6bd2 268 syscall_table[SYS_memcntl] = "memcntl";
44122162
RO
269#ifdef SYS_memsys
270 syscall_table[SYS_memsys] = "memsys";
0fda6bd2 271#endif
0fda6bd2 272 syscall_table[SYS_mincore] = "mincore";
c18c06be 273#ifdef SYS_mkdir
0fda6bd2
JM
274 syscall_table[SYS_mkdir] = "mkdir";
275#endif
44122162
RO
276#ifdef SYS_mkdirat
277 syscall_table[SYS_mkdirat] = "mkdirat";
0fda6bd2 278#endif
c18c06be 279#ifdef SYS_mknod
0fda6bd2
JM
280 syscall_table[SYS_mknod] = "mknod";
281#endif
44122162
RO
282#ifdef SYS_mknodat
283 syscall_table[SYS_mknodat] = "mknodat";
0fda6bd2 284#endif
0fda6bd2 285 syscall_table[SYS_mmap] = "mmap";
0fda6bd2 286 syscall_table[SYS_mmap64] = "mmap64";
44122162
RO
287#ifdef SYS_mmapobj
288 syscall_table[SYS_mmapobj] = "mmapobj";
0fda6bd2 289#endif
0fda6bd2 290 syscall_table[SYS_modctl] = "modctl";
0fda6bd2 291 syscall_table[SYS_mount] = "mount";
0fda6bd2 292 syscall_table[SYS_mprotect] = "mprotect";
0fda6bd2 293 syscall_table[SYS_msgsys] = "msgsys";
0fda6bd2 294 syscall_table[SYS_munmap] = "munmap";
0fda6bd2 295 syscall_table[SYS_nanosleep] = "nanosleep";
0fda6bd2 296 syscall_table[SYS_nfssys] = "nfssys";
0fda6bd2 297 syscall_table[SYS_nice] = "nice";
0fda6bd2 298 syscall_table[SYS_ntp_adjtime] = "ntp_adjtime";
0fda6bd2 299 syscall_table[SYS_ntp_gettime] = "ntp_gettime";
c18c06be 300#ifdef SYS_open
0fda6bd2
JM
301 syscall_table[SYS_open] = "open";
302#endif
c18c06be 303#ifdef SYS_open64
0fda6bd2
JM
304 syscall_table[SYS_open64] = "open64";
305#endif
44122162
RO
306#ifdef SYS_openat
307 syscall_table[SYS_openat] = "openat";
0fda6bd2 308#endif
44122162
RO
309#ifdef SYS_openat64
310 syscall_table[SYS_openat64] = "openat64";
0fda6bd2 311#endif
44122162 312 syscall_table[SYS_p_online] = "p_online";
0fda6bd2 313 syscall_table[SYS_pathconf] = "pathconf";
0fda6bd2 314 syscall_table[SYS_pause] = "pause";
44122162 315 syscall_table[SYS_pcsample] = "pcsample";
0fda6bd2 316 syscall_table[SYS_pgrpsys] = "pgrpsys";
0fda6bd2 317 syscall_table[SYS_pipe] = "pipe";
c18c06be 318#ifdef SYS_plock
0fda6bd2
JM
319 syscall_table[SYS_plock] = "plock";
320#endif
c18c06be 321#ifdef SYS_poll
0fda6bd2
JM
322 syscall_table[SYS_poll] = "poll";
323#endif
44122162
RO
324 syscall_table[SYS_pollsys] = "pollsys";
325 syscall_table[SYS_port] = "port";
0fda6bd2 326 syscall_table[SYS_pread] = "pread";
0fda6bd2 327 syscall_table[SYS_pread64] = "pread64";
0fda6bd2 328 syscall_table[SYS_priocntlsys] = "priocntlsys";
44122162 329 syscall_table[SYS_privsys] = "privsys";
c18c06be 330#ifdef SYS_processor_bind
0fda6bd2
JM
331 syscall_table[SYS_processor_bind] = "processor_bind";
332#endif
c18c06be 333#ifdef SYS_processor_info
0fda6bd2
JM
334 syscall_table[SYS_processor_info] = "processor_info";
335#endif
44122162
RO
336#ifdef SYS_processor_sys
337 syscall_table[SYS_processor_sys] = "processor_sys";
0fda6bd2 338#endif
0fda6bd2 339 syscall_table[SYS_profil] = "profil";
0fda6bd2 340 syscall_table[SYS_pset] = "pset";
0fda6bd2 341 syscall_table[SYS_putmsg] = "putmsg";
0fda6bd2 342 syscall_table[SYS_putpmsg] = "putpmsg";
0fda6bd2 343 syscall_table[SYS_pwrite] = "pwrite";
0fda6bd2 344 syscall_table[SYS_pwrite64] = "pwrite64";
44122162 345 syscall_table[SYS_rctlsys] = "rctlsys";
0fda6bd2 346 syscall_table[SYS_read] = "read";
c18c06be 347#ifdef SYS_readlink
0fda6bd2
JM
348 syscall_table[SYS_readlink] = "readlink";
349#endif
44122162
RO
350#ifdef SYS_readlinkat
351 syscall_table[SYS_readlinkat] = "readlinkat";
0fda6bd2 352#endif
44122162 353 syscall_table[SYS_readv] = "readv";
0fda6bd2 354 syscall_table[SYS_recv] = "recv";
0fda6bd2 355 syscall_table[SYS_recvfrom] = "recvfrom";
44122162
RO
356#ifdef SYS_recvmmsg
357 syscall_table[SYS_recvmmsg] = "recvmmsg";
0fda6bd2 358#endif
0fda6bd2 359 syscall_table[SYS_recvmsg] = "recvmsg";
44122162
RO
360#ifdef SYS_reflinkat
361 syscall_table[SYS_reflinkat] = "reflinkat";
0fda6bd2 362#endif
c18c06be 363#ifdef SYS_rename
0fda6bd2
JM
364 syscall_table[SYS_rename] = "rename";
365#endif
44122162
RO
366#ifdef SYS_renameat
367 syscall_table[SYS_renameat] = "renameat";
0fda6bd2 368#endif
44122162 369 syscall_table[SYS_resolvepath] = "resolvepath";
c18c06be 370#ifdef SYS_rmdir
0fda6bd2
JM
371 syscall_table[SYS_rmdir] = "rmdir";
372#endif
0fda6bd2 373 syscall_table[SYS_rpcsys] = "rpcsys";
44122162 374 syscall_table[SYS_rusagesys] = "rusagesys";
0fda6bd2 375 syscall_table[SYS_schedctl] = "schedctl";
c18c06be 376#ifdef SYS_secsys
0fda6bd2
JM
377 syscall_table[SYS_secsys] = "secsys";
378#endif
0fda6bd2 379 syscall_table[SYS_semsys] = "semsys";
0fda6bd2 380 syscall_table[SYS_send] = "send";
44122162
RO
381 syscall_table[SYS_sendfilev] = "sendfilev";
382#ifdef SYS_sendmmsg
383 syscall_table[SYS_sendmmsg] = "sendmmsg";
0fda6bd2 384#endif
0fda6bd2 385 syscall_table[SYS_sendmsg] = "sendmsg";
0fda6bd2 386 syscall_table[SYS_sendto] = "sendto";
0fda6bd2 387 syscall_table[SYS_setegid] = "setegid";
0fda6bd2 388 syscall_table[SYS_seteuid] = "seteuid";
0fda6bd2 389 syscall_table[SYS_setgid] = "setgid";
0fda6bd2 390 syscall_table[SYS_setgroups] = "setgroups";
0fda6bd2 391 syscall_table[SYS_setitimer] = "setitimer";
0fda6bd2 392 syscall_table[SYS_setregid] = "setregid";
0fda6bd2 393 syscall_table[SYS_setreuid] = "setreuid";
0fda6bd2 394 syscall_table[SYS_setrlimit] = "setrlimit";
0fda6bd2 395 syscall_table[SYS_setrlimit64] = "setrlimit64";
0fda6bd2 396 syscall_table[SYS_setsockopt] = "setsockopt";
0fda6bd2 397 syscall_table[SYS_setuid] = "setuid";
44122162 398 syscall_table[SYS_sharefs] = "sharefs";
0fda6bd2 399 syscall_table[SYS_shmsys] = "shmsys";
0fda6bd2 400 syscall_table[SYS_shutdown] = "shutdown";
44122162
RO
401#ifdef SYS_sidsys
402 syscall_table[SYS_sidsys] = "sidsys";
0fda6bd2 403#endif
0fda6bd2 404 syscall_table[SYS_sigaction] = "sigaction";
0fda6bd2 405 syscall_table[SYS_sigaltstack] = "sigaltstack";
c18c06be 406#ifdef SYS_signal
0fda6bd2
JM
407 syscall_table[SYS_signal] = "signal";
408#endif
0fda6bd2 409 syscall_table[SYS_signotify] = "signotify";
0fda6bd2 410 syscall_table[SYS_sigpending] = "sigpending";
0fda6bd2 411 syscall_table[SYS_sigprocmask] = "sigprocmask";
0fda6bd2 412 syscall_table[SYS_sigqueue] = "sigqueue";
44122162
RO
413#ifdef SYS_sigresend
414 syscall_table[SYS_sigresend] = "sigresend";
0fda6bd2 415#endif
0fda6bd2 416 syscall_table[SYS_sigsendsys] = "sigsendsys";
0fda6bd2 417 syscall_table[SYS_sigsuspend] = "sigsuspend";
44122162 418 syscall_table[SYS_sigtimedwait] = "sigtimedwait";
0fda6bd2 419 syscall_table[SYS_so_socket] = "so_socket";
0fda6bd2 420 syscall_table[SYS_so_socketpair] = "so_socketpair";
0fda6bd2 421 syscall_table[SYS_sockconfig] = "sockconfig";
44122162
RO
422#ifdef SYS_sparc_fixalign
423 syscall_table[SYS_sparc_fixalign] = "sparc_fixalign";
0fda6bd2 424#endif
44122162
RO
425 syscall_table[SYS_sparc_utrap_install] = "sparc_utrap_install";
426#ifdef SYS_spawn
427 syscall_table[SYS_spawn] = "spawn";
0fda6bd2 428#endif
c18c06be 429#ifdef SYS_stat
0fda6bd2
JM
430 syscall_table[SYS_stat] = "stat";
431#endif
c18c06be 432#ifdef SYS_stat64
0fda6bd2
JM
433 syscall_table[SYS_stat64] = "stat64";
434#endif
0fda6bd2 435 syscall_table[SYS_statfs] = "statfs";
0fda6bd2 436 syscall_table[SYS_statvfs] = "statvfs";
0fda6bd2 437 syscall_table[SYS_statvfs64] = "statvfs64";
0fda6bd2 438 syscall_table[SYS_stime] = "stime";
0fda6bd2 439 syscall_table[SYS_stty] = "stty";
c18c06be 440#ifdef SYS_symlink
0fda6bd2
JM
441 syscall_table[SYS_symlink] = "symlink";
442#endif
44122162
RO
443#ifdef SYS_symlinkat
444 syscall_table[SYS_symlinkat] = "symlinkat";
0fda6bd2 445#endif
44122162 446 syscall_table[SYS_sync] = "sync";
0fda6bd2 447 syscall_table[SYS_syscall] = "syscall";
0fda6bd2 448 syscall_table[SYS_sysconfig] = "sysconfig";
0fda6bd2 449 syscall_table[SYS_sysfs] = "sysfs";
0fda6bd2 450 syscall_table[SYS_sysi86] = "sysi86";
c18c06be 451#ifdef SYS_syssun
0fda6bd2
JM
452 syscall_table[SYS_syssun] = "syssun";
453#endif
44122162
RO
454#ifdef SYS_system_stats
455 syscall_table[SYS_system_stats] = "system_stats";
0fda6bd2 456#endif
44122162
RO
457 syscall_table[SYS_systeminfo] = "systeminfo";
458 syscall_table[SYS_tasksys] = "tasksys";
0fda6bd2 459 syscall_table[SYS_time] = "time";
0fda6bd2 460 syscall_table[SYS_timer_create] = "timer_create";
0fda6bd2 461 syscall_table[SYS_timer_delete] = "timer_delete";
0fda6bd2 462 syscall_table[SYS_timer_getoverrun] = "timer_getoverrun";
0fda6bd2 463 syscall_table[SYS_timer_gettime] = "timer_gettime";
0fda6bd2 464 syscall_table[SYS_timer_settime] = "timer_settime";
0fda6bd2 465 syscall_table[SYS_times] = "times";
0fda6bd2 466 syscall_table[SYS_uadmin] = "uadmin";
44122162 467 syscall_table[SYS_ucredsys] = "ucredsys";
0fda6bd2 468 syscall_table[SYS_ulimit] = "ulimit";
0fda6bd2 469 syscall_table[SYS_umask] = "umask";
c18c06be 470#ifdef SYS_umount
0fda6bd2
JM
471 syscall_table[SYS_umount] = "umount";
472#endif
44122162 473 syscall_table[SYS_umount2] = "umount2";
0fda6bd2 474 syscall_table[SYS_uname] = "uname";
c18c06be 475#ifdef SYS_unlink
0fda6bd2
JM
476 syscall_table[SYS_unlink] = "unlink";
477#endif
44122162
RO
478#ifdef SYS_unlinkat
479 syscall_table[SYS_unlinkat] = "unlinkat";
0fda6bd2 480#endif
c18c06be 481#ifdef SYS_utime
0fda6bd2
JM
482 syscall_table[SYS_utime] = "utime";
483#endif
44122162
RO
484#ifdef SYS_utimensat
485 syscall_table[SYS_utimensat] = "utimensat";
486#endif
c18c06be 487#ifdef SYS_utimes
0fda6bd2
JM
488 syscall_table[SYS_utimes] = "utimes";
489#endif
44122162
RO
490#ifdef SYS_utimesys
491 syscall_table[SYS_utimesys] = "utimesys";
492#endif
0fda6bd2 493 syscall_table[SYS_utssys] = "utssys";
44122162
RO
494 syscall_table[SYS_uucopy] = "uucopy";
495 syscall_table[SYS_uucopystr] = "uucopystr";
e28b63a9 496#ifdef SYS_uuidsys
44122162 497 syscall_table[SYS_uuidsys] = "uuidsys";
e28b63a9 498#endif
44122162
RO
499#ifdef SYS_va_mask
500 syscall_table[SYS_va_mask] = "va_mask";
0fda6bd2 501#endif
0fda6bd2 502 syscall_table[SYS_vfork] = "vfork";
0fda6bd2 503 syscall_table[SYS_vhangup] = "vhangup";
c18c06be 504#ifdef SYS_wait
0fda6bd2
JM
505 syscall_table[SYS_wait] = "wait";
506#endif
c18c06be 507#ifdef SYS_waitid
0fda6bd2
JM
508 syscall_table[SYS_waitid] = "waitid";
509#endif
c18c06be 510#ifdef SYS_waitsys
0fda6bd2
JM
511 syscall_table[SYS_waitsys] = "waitsys";
512#endif
0fda6bd2 513 syscall_table[SYS_write] = "write";
0fda6bd2 514 syscall_table[SYS_writev] = "writev";
c18c06be 515#ifdef SYS_xmknod
0fda6bd2
JM
516 syscall_table[SYS_xmknod] = "xmknod";
517#endif
c18c06be 518#ifdef SYS_xstat
0fda6bd2
JM
519 syscall_table[SYS_xstat] = "xstat";
520#endif
0fda6bd2 521 syscall_table[SYS_yield] = "yield";
44122162 522 syscall_table[SYS_zone] = "zone";
5bfb05ca 523}
0fda6bd2 524
c18c06be 525/* Prettyprint syscall NUM. */
0fda6bd2
JM
526
527void
fba45db2 528proc_prettyfprint_syscall (FILE *file, int num, int verbose)
0fda6bd2
JM
529{
530 if (syscall_table[num])
531 fprintf (file, "SYS_%s ", syscall_table[num]);
532 else
533 fprintf (file, "<Unknown syscall %d> ", num);
534}
535
536void
fba45db2 537proc_prettyprint_syscall (int num, int verbose)
0fda6bd2
JM
538{
539 proc_prettyfprint_syscall (stdout, num, verbose);
540}
541
c18c06be 542/* Prettyprint all syscalls in SYSSET. */
0fda6bd2
JM
543
544void
fba45db2 545proc_prettyfprint_syscalls (FILE *file, sysset_t *sysset, int verbose)
0fda6bd2
JM
546{
547 int i;
548
549 for (i = 0; i < MAX_SYSCALLS; i++)
550 if (prismember (sysset, i))
551 {
552 proc_prettyfprint_syscall (file, i, verbose);
553 }
554 fprintf (file, "\n");
555}
556
557void
fba45db2 558proc_prettyprint_syscalls (sysset_t *sysset, int verbose)
0fda6bd2
JM
559{
560 proc_prettyfprint_syscalls (stdout, sysset, verbose);
561}
c18c06be
MK
562\f
563/* Prettyprint signals. */
0fda6bd2 564
3657956b
GB
565/* Signal translation table, ordered ANSI-standard signals first,
566 other signals second, with signals in each block ordered by their
567 numerical values on a typical POSIX platform. */
0fda6bd2
JM
568
569static struct trans signal_table[] =
570{
571 { 0, "<no signal>", "no signal" },
3657956b
GB
572
573 /* SIGINT, SIGILL, SIGABRT, SIGFPE, SIGSEGV and SIGTERM
574 are ANSI-standard signals and are always available. */
575
576 { SIGINT, "SIGINT", "Interrupt (rubout)" },
577 { SIGILL, "SIGILL", "Illegal instruction" }, /* not reset when caught */
578 { SIGABRT, "SIGABRT", "used by abort()" }, /* replaces SIGIOT */
579 { SIGFPE, "SIGFPE", "Floating point exception" },
580 { SIGSEGV, "SIGSEGV", "Segmentation violation" },
581 { SIGTERM, "SIGTERM", "Software termination signal from kill" },
582
583 /* All other signals need preprocessor conditionals. */
584
0fda6bd2 585 { SIGHUP, "SIGHUP", "Hangup" },
0fda6bd2 586 { SIGQUIT, "SIGQUIT", "Quit (ASCII FS)" },
0fda6bd2 587 { SIGTRAP, "SIGTRAP", "Trace trap" }, /* not reset when caught */
0fda6bd2 588 { SIGIOT, "SIGIOT", "IOT instruction" },
0fda6bd2 589 { SIGEMT, "SIGEMT", "EMT instruction" },
0fda6bd2 590 { SIGKILL, "SIGKILL", "Kill" }, /* Solaris: cannot be caught/ignored */
0fda6bd2 591 { SIGBUS, "SIGBUS", "Bus error" },
0fda6bd2 592 { SIGSYS, "SIGSYS", "Bad argument to system call" },
0fda6bd2 593 { SIGPIPE, "SIGPIPE", "Write to pipe with no one to read it" },
0fda6bd2 594 { SIGALRM, "SIGALRM", "Alarm clock" },
0fda6bd2 595 { SIGUSR1, "SIGUSR1", "User defined signal 1" },
0fda6bd2 596 { SIGUSR2, "SIGUSR2", "User defined signal 2" },
0fda6bd2 597 { SIGCHLD, "SIGCHLD", "Child status changed" }, /* Posix version */
0fda6bd2 598 { SIGCLD, "SIGCLD", "Child status changed" }, /* Solaris version */
0fda6bd2 599 { SIGPWR, "SIGPWR", "Power-fail restart" },
0fda6bd2 600 { SIGWINCH, "SIGWINCH", "Window size change" },
0fda6bd2 601 { SIGURG, "SIGURG", "Urgent socket condition" },
0fda6bd2 602 { SIGPOLL, "SIGPOLL", "Pollable event" },
0fda6bd2 603 { SIGIO, "SIGIO", "Socket I/O possible" }, /* alias for SIGPOLL */
3e43a32a
MS
604 { SIGSTOP, "SIGSTOP", "Stop, not from tty" }, /* cannot be caught or
605 ignored */
0fda6bd2 606 { SIGTSTP, "SIGTSTP", "User stop from tty" },
0fda6bd2 607 { SIGCONT, "SIGCONT", "Stopped process has been continued" },
0fda6bd2 608 { SIGTTIN, "SIGTTIN", "Background tty read attempted" },
0fda6bd2 609 { SIGTTOU, "SIGTTOU", "Background tty write attempted" },
0fda6bd2 610 { SIGVTALRM, "SIGVTALRM", "Virtual timer expired" },
0fda6bd2 611 { SIGPROF, "SIGPROF", "Profiling timer expired" },
0fda6bd2 612 { SIGXCPU, "SIGXCPU", "Exceeded CPU limit" },
0fda6bd2 613 { SIGXFSZ, "SIGXFSZ", "Exceeded file size limit" },
0fda6bd2 614 { SIGWAITING, "SIGWAITING", "Process's LWPs are blocked" },
0fda6bd2 615 { SIGLWP, "SIGLWP", "Used by thread library" },
0fda6bd2 616 { SIGFREEZE, "SIGFREEZE", "Used by CPR" },
0fda6bd2 617 { SIGTHAW, "SIGTHAW", "Used by CPR" },
0fda6bd2 618 { SIGCANCEL, "SIGCANCEL", "Used by libthread" },
0fda6bd2 619 { SIGLOST, "SIGLOST", "Resource lost" },
c18c06be
MK
620
621 /* FIXME: add real-time signals. */
0fda6bd2
JM
622};
623
c18c06be 624/* Prettyprint signal number SIGNO. */
0fda6bd2
JM
625
626void
fba45db2 627proc_prettyfprint_signal (FILE *file, int signo, int verbose)
0fda6bd2
JM
628{
629 int i;
630
631 for (i = 0; i < sizeof (signal_table) / sizeof (signal_table[0]); i++)
632 if (signo == signal_table[i].value)
633 {
634 fprintf (file, "%s", signal_table[i].name);
635 if (verbose)
636 fprintf (file, ": %s\n", signal_table[i].desc);
637 else
638 fprintf (file, " ");
639 return;
640 }
641 fprintf (file, "Unknown signal %d%c", signo, verbose ? '\n' : ' ');
642}
643
644void
fba45db2 645proc_prettyprint_signal (int signo, int verbose)
0fda6bd2
JM
646{
647 proc_prettyfprint_signal (stdout, signo, verbose);
648}
649
c18c06be 650/* Prettyprint all signals in SIGSET. */
0fda6bd2
JM
651
652void
fba45db2 653proc_prettyfprint_signalset (FILE *file, sigset_t *sigset, int verbose)
0fda6bd2
JM
654{
655 int i;
656
c18c06be
MK
657 /* Loop over all signal numbers from 0 to NSIG, using them as the
658 index to prismember. The signal table had better not contain
659 aliases, for if it does they will both be printed. */
660
0fda6bd2
JM
661 for (i = 0; i < NSIG; i++)
662 if (prismember (sigset, i))
663 proc_prettyfprint_signal (file, i, verbose);
664
665 if (!verbose)
666 fprintf (file, "\n");
667}
668
669void
fba45db2 670proc_prettyprint_signalset (sigset_t *sigset, int verbose)
0fda6bd2
JM
671{
672 proc_prettyfprint_signalset (stdout, sigset, verbose);
673}
c18c06be 674\f
0fda6bd2 675
c18c06be
MK
676/* Prettyprint faults. */
677
678/* Fault translation table. */
0fda6bd2
JM
679
680static struct trans fault_table[] =
681{
0fda6bd2 682 { FLTILL, "FLTILL", "Illegal instruction" },
0fda6bd2 683 { FLTPRIV, "FLTPRIV", "Privileged instruction" },
0fda6bd2 684 { FLTBPT, "FLTBPT", "Breakpoint trap" },
0fda6bd2 685 { FLTTRACE, "FLTTRACE", "Trace trap" },
0fda6bd2 686 { FLTACCESS, "FLTACCESS", "Memory access fault" },
0fda6bd2 687 { FLTBOUNDS, "FLTBOUNDS", "Memory bounds violation" },
0fda6bd2 688 { FLTIOVF, "FLTIOVF", "Integer overflow" },
0fda6bd2 689 { FLTIZDIV, "FLTIZDIV", "Integer zero divide" },
0fda6bd2 690 { FLTFPE, "FLTFPE", "Floating-point exception" },
0fda6bd2 691 { FLTSTACK, "FLTSTACK", "Unrecoverable stack fault" },
0fda6bd2 692 { FLTPAGE, "FLTPAGE", "Recoverable page fault" },
0fda6bd2 693 { FLTWATCH, "FLTWATCH", "User watchpoint" },
0fda6bd2
JM
694};
695
c18c06be
MK
696/* Work horse. Accepts an index into the fault table, prints it
697 pretty. */
0fda6bd2
JM
698
699static void
fba45db2 700prettyfprint_faulttable_entry (FILE *file, int i, int verbose)
0fda6bd2
JM
701{
702 fprintf (file, "%s", fault_table[i].name);
703 if (verbose)
704 fprintf (file, ": %s\n", fault_table[i].desc);
705 else
706 fprintf (file, " ");
707}
708
c18c06be 709/* Prettyprint hardware fault number FAULTNO. */
0fda6bd2
JM
710
711void
fba45db2 712proc_prettyfprint_fault (FILE *file, int faultno, int verbose)
0fda6bd2
JM
713{
714 int i;
715
c18c06be 716 for (i = 0; i < ARRAY_SIZE (fault_table); i++)
0fda6bd2
JM
717 if (faultno == fault_table[i].value)
718 {
719 prettyfprint_faulttable_entry (file, i, verbose);
720 return;
721 }
722
723 fprintf (file, "Unknown hardware fault %d%c",
724 faultno, verbose ? '\n' : ' ');
725}
726
727void
fba45db2 728proc_prettyprint_fault (int faultno, int verbose)
0fda6bd2
JM
729{
730 proc_prettyfprint_fault (stdout, faultno, verbose);
731}
732
c18c06be 733/* Prettyprint all faults in FLTSET. */
0fda6bd2
JM
734
735void
fba45db2 736proc_prettyfprint_faultset (FILE *file, fltset_t *fltset, int verbose)
0fda6bd2
JM
737{
738 int i;
739
c18c06be
MK
740 /* Loop through the fault table, using the value field as the index
741 to prismember. The fault table had better not contain aliases,
742 for if it does they will both be printed. */
743
744 for (i = 0; i < ARRAY_SIZE (fault_table); i++)
0fda6bd2
JM
745 if (prismember (fltset, fault_table[i].value))
746 prettyfprint_faulttable_entry (file, i, verbose);
747
748 if (!verbose)
749 fprintf (file, "\n");
750}
751
752void
fba45db2 753proc_prettyprint_faultset (fltset_t *fltset, int verbose)
0fda6bd2
JM
754{
755 proc_prettyfprint_faultset (stdout, fltset, verbose);
756}
757
c18c06be 758/* TODO: actions, holds... */
0fda6bd2
JM
759
760void
761proc_prettyprint_actionset (struct sigaction *actions, int verbose)
762{
763}
764
6c265988 765void _initialize_proc_events ();
0fda6bd2 766void
6c265988 767_initialize_proc_events ()
0fda6bd2
JM
768{
769 init_syscall_table ();
770}