1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#include <string.h>
6#include <stdio.h>
7#include <stdlib.h>
8#include <signal.h>
9#include <errno.h>
10#if defined(__aarch64__)
11#include "./aarch64/syscall.h"
12#else
13#include <sys/syscall.h>
14#endif
15
16#include <sys/stat.h>
17#include <sys/ptrace.h>
18#include <sys/types.h>
19#include <linux/unistd.h>
20#include <linux/capability.h>
21#include <linux/magic.h>
22
23#include "event_man.h"
24#include "shared_mem_dump.h"
25#include "syscall_name.h"
26
27#define CASE(_id) \
28 case _id: \
29 return #_id;
30
31const char* signal_name(int sig)
32{
33 /* strsignal() would be nice to use here, but it provides TMI. */
34 if (32 <= sig && sig <= 64) {
35 static char buf[100];
36 snprintf(buf, sizeof(buf) - 1, "SIGRT%d", sig);
37 return buf;
38 }
39
40 switch (sig) {
41 CASE(SIGHUP);
42 CASE(SIGINT);
43 CASE(SIGQUIT);
44 CASE(SIGILL);
45 CASE(SIGTRAP);
46 CASE(SIGABRT); /*CASE(SIGIOT);*/
47 CASE(SIGBUS);
48 CASE(SIGFPE);
49 CASE(SIGKILL);
50 CASE(SIGUSR1);
51 CASE(SIGSEGV);
52 CASE(SIGUSR2);
53 CASE(SIGPIPE);
54 CASE(SIGALRM);
55 CASE(SIGTERM);
56#if defined(__i386__) || defined(__x86_64__)
57 CASE(SIGSTKFLT); /*CASE(SIGCLD);*/
58#endif
59 CASE(SIGCHLD);
60 CASE(SIGCONT);
61 CASE(SIGSTOP);
62 CASE(SIGTSTP);
63 CASE(SIGTTIN);
64 CASE(SIGTTOU);
65 CASE(SIGURG);
66 CASE(SIGXCPU);
67 CASE(SIGXFSZ);
68 CASE(SIGVTALRM);
69 CASE(SIGPROF);
70 CASE(SIGWINCH); /*CASE(SIGPOLL);*/
71 CASE(SIGIO);
72 CASE(SIGPWR);
73 CASE(SIGSYS);
74 /* Special-case this so we don't need to sprintf in this common case.
75 * This case is common because we often pass signal_name(sig) to assertions
76 * when sig is 0.
77 */
78 case 0:
79 return "signal(0)";
80 default: {
81 static char buf[100];
82 sprintf(buf, "signal(%d)", sig);
83 return (buf);
84 }
85 }
86}
87
88const char* errno_name(int err) {
89 switch (err) {
90 case 0:
91 return "SUCCESS";
92 CASE(EPERM);
93 CASE(ENOENT);
94 CASE(ESRCH);
95 CASE(EINTR);
96 CASE(EIO);
97 CASE(ENXIO);
98 CASE(E2BIG);
99 CASE(ENOEXEC);
100 CASE(EBADF);
101 CASE(ECHILD);
102 CASE(EAGAIN);
103 CASE(ENOMEM);
104 CASE(EACCES);
105 CASE(EFAULT);
106 CASE(ENOTBLK);
107 CASE(EBUSY);
108 CASE(EEXIST);
109 CASE(EXDEV);
110 CASE(ENODEV);
111 CASE(ENOTDIR);
112 CASE(EISDIR);
113 CASE(EINVAL);
114 CASE(ENFILE);
115 CASE(EMFILE);
116 CASE(ENOTTY);
117 CASE(ETXTBSY);
118 CASE(EFBIG);
119 CASE(ENOSPC);
120 CASE(ESPIPE);
121 CASE(EROFS);
122 CASE(EMLINK);
123 CASE(EPIPE);
124 CASE(EDOM);
125 CASE(ERANGE);
126 CASE(EDEADLK);
127 CASE(ENAMETOOLONG);
128 CASE(ENOLCK);
129 CASE(ENOSYS);
130 CASE(ENOTEMPTY);
131 CASE(ELOOP);
132 CASE(ENOMSG);
133 CASE(EIDRM);
134 CASE(ECHRNG);
135 CASE(EL2NSYNC);
136 CASE(EL3HLT);
137 CASE(EL3RST);
138 CASE(ELNRNG);
139 CASE(EUNATCH);
140 CASE(ENOCSI);
141 CASE(EL2HLT);
142 CASE(EBADE);
143 CASE(EBADR);
144 CASE(EXFULL);
145 CASE(ENOANO);
146 CASE(EBADRQC);
147 CASE(EBADSLT);
148 CASE(EBFONT);
149 CASE(ENOSTR);
150 CASE(ENODATA);
151 CASE(ETIME);
152 CASE(ENOSR);
153 CASE(ENONET);
154 CASE(ENOPKG);
155 CASE(EREMOTE);
156 CASE(ENOLINK);
157 CASE(EADV);
158 CASE(ESRMNT);
159 CASE(ECOMM);
160 CASE(EPROTO);
161 CASE(EMULTIHOP);
162 CASE(EDOTDOT);
163 CASE(EBADMSG);
164 CASE(EOVERFLOW);
165 CASE(ENOTUNIQ);
166 CASE(EBADFD);
167 CASE(EREMCHG);
168 CASE(ELIBACC);
169 CASE(ELIBBAD);
170 CASE(ELIBSCN);
171 CASE(ELIBMAX);
172 CASE(ELIBEXEC);
173 CASE(EILSEQ);
174 CASE(ERESTART);
175 CASE(ESTRPIPE);
176 CASE(EUSERS);
177 CASE(ENOTSOCK);
178 CASE(EDESTADDRREQ);
179 CASE(EMSGSIZE);
180 CASE(EPROTOTYPE);
181 CASE(ENOPROTOOPT);
182 CASE(EPROTONOSUPPORT);
183 CASE(ESOCKTNOSUPPORT);
184 CASE(EOPNOTSUPP);
185 CASE(EPFNOSUPPORT);
186 CASE(EAFNOSUPPORT);
187 CASE(EADDRINUSE);
188 CASE(EADDRNOTAVAIL);
189 CASE(ENETDOWN);
190 CASE(ENETUNREACH);
191 CASE(ENETRESET);
192 CASE(ECONNABORTED);
193 CASE(ECONNRESET);
194 CASE(ENOBUFS);
195 CASE(EISCONN);
196 CASE(ENOTCONN);
197 CASE(ESHUTDOWN);
198 CASE(ETOOMANYREFS);
199 CASE(ETIMEDOUT);
200 CASE(ECONNREFUSED);
201 CASE(EHOSTDOWN);
202 CASE(EHOSTUNREACH);
203 CASE(EALREADY);
204 CASE(EINPROGRESS);
205 CASE(ESTALE);
206 CASE(EUCLEAN);
207 CASE(ENOTNAM);
208 CASE(ENAVAIL);
209 CASE(EISNAM);
210 CASE(EREMOTEIO);
211 CASE(EDQUOT);
212 CASE(ENOMEDIUM);
213 CASE(EMEDIUMTYPE);
214 CASE(ECANCELED);
215 CASE(ENOKEY);
216 CASE(EKEYEXPIRED);
217 CASE(EKEYREVOKED);
218 CASE(EKEYREJECTED);
219 CASE(EOWNERDEAD);
220 CASE(ENOTRECOVERABLE);
221 CASE(ERFKILL);
222 CASE(EHWPOISON);
223 default: {
224 static char buf[100];
225 sprintf(buf, "errno(%d)", err);
226 return (buf);
227 }
228 }
229}
230
231const char* sicode_name(int code, int sig) {
232 switch (code) {
233 CASE(SI_USER);
234 CASE(SI_KERNEL);
235 CASE(SI_QUEUE);
236 CASE(SI_TIMER);
237 CASE(SI_MESGQ);
238 CASE(SI_ASYNCIO);
239 CASE(SI_SIGIO);
240 CASE(SI_TKILL);
241 CASE(SI_ASYNCNL);
242 }
243
244 switch (sig) {
245 case SIGSEGV:
246 switch (code) {
247 CASE(SEGV_MAPERR);
248 CASE(SEGV_ACCERR);
249 }
250 break;
251 case SIGTRAP:
252 switch (code) {
253 CASE(TRAP_BRKPT);
254 CASE(TRAP_TRACE);
255 }
256 break;
257 case SIGILL:
258 switch (code) {
259 CASE(ILL_ILLOPC);
260 CASE(ILL_ILLOPN);
261 CASE(ILL_ILLADR);
262 CASE(ILL_ILLTRP);
263 CASE(ILL_PRVOPC);
264 CASE(ILL_PRVREG);
265 CASE(ILL_COPROC);
266 CASE(ILL_BADSTK);
267 }
268 break;
269 case SIGFPE:
270 switch (code) {
271 CASE(FPE_INTDIV);
272 CASE(FPE_INTOVF);
273 CASE(FPE_FLTDIV);
274 CASE(FPE_FLTOVF);
275 CASE(FPE_FLTUND);
276 CASE(FPE_FLTRES);
277 CASE(FPE_FLTINV);
278 CASE(FPE_FLTSUB);
279 }
280 break;
281 case SIGBUS:
282 switch (code) {
283 CASE(BUS_ADRALN);
284 CASE(BUS_ADRERR);
285 CASE(BUS_OBJERR);
286 CASE(BUS_MCEERR_AR);
287 CASE(BUS_MCEERR_AO);
288 }
289 break;
290 case SIGCHLD:
291 switch (code) {
292 CASE(CLD_EXITED);
293 CASE(CLD_KILLED);
294 CASE(CLD_DUMPED);
295 CASE(CLD_TRAPPED);
296 CASE(CLD_STOPPED);
297 CASE(CLD_CONTINUED);
298 }
299 break;
300 case SIGPOLL:
301 switch (code) {
302 CASE(POLL_IN);
303 CASE(POLL_OUT);
304 CASE(POLL_MSG);
305 CASE(POLL_ERR);
306 CASE(POLL_PRI);
307 CASE(POLL_HUP);
308 }
309 break;
310 }
311
312 static char buf[100];
313 sprintf(buf, "sicode(%d)", code);
314 return (buf);
315}
316
317// see /usr/include/x86_64-linux-gnu/asm/unistd_64.h
318const char* syscall_name(long call)
319{
320 switch(call) {
321 CASE(SYS_read);
322 CASE(SYS_write);
323 CASE(SYS_open);
324 CASE(SYS_close);
325 CASE(SYS_stat);
326 CASE(SYS_fstat);
327 CASE(SYS_lstat);
328 CASE(SYS_poll);
329 CASE(SYS_lseek);
330 CASE(SYS_mmap);
331 CASE(SYS_mprotect);
332 CASE(SYS_munmap);
333 CASE(SYS_brk);
334 CASE(SYS_rt_sigaction);
335 CASE(SYS_rt_sigprocmask);
336 CASE(SYS_rt_sigreturn);
337 CASE(SYS_ioctl);
338 CASE(SYS_pread64);
339 CASE(SYS_pwrite64);
340 CASE(SYS_readv);
341 CASE(SYS_writev);
342 CASE(SYS_access);
343 CASE(SYS_pipe);
344 CASE(SYS_sched_yield);
345 CASE(SYS_mremap);
346 CASE(SYS_msync);
347 CASE(SYS_mincore);
348 CASE(SYS_madvise);
349 CASE(SYS_shmget);
350 CASE(SYS_shmctl);
351 CASE(SYS_dup);
352 CASE(SYS_dup2);
353 CASE(SYS_nanosleep);
354 CASE(SYS_getitimer);
355 CASE(SYS_setitimer);
356 CASE(SYS_sendfile);
357 CASE(SYS_socket);
358 CASE(SYS_connect);
359 CASE(SYS_accept);
360 CASE(SYS_sendto);
361 CASE(SYS_recvfrom);
362 CASE(SYS_sendmsg);
363 CASE(SYS_recvmsg);
364 CASE(SYS_shutdown);
365 CASE(SYS_bind);
366 CASE(SYS_listen);
367 CASE(SYS_getsockname);
368 CASE(SYS_getpeername);
369 CASE(SYS_socketpair);
370 CASE(SYS_setsockopt);
371 CASE(SYS_getsockopt);
372 CASE(SYS_clone);
373 CASE(SYS_fork);
374 CASE(SYS_execve);
375 CASE(SYS_exit);
376 CASE(SYS_wait4);
377 CASE(SYS_kill);
378 CASE(SYS_uname);
379 CASE(SYS_semget);
380 CASE(SYS_semop);
381 CASE(SYS_semctl);
382 CASE(SYS_shmdt);
383 CASE(SYS_msgget);
384 CASE(SYS_msgsnd);
385 CASE(SYS_msgrcv);
386 CASE(SYS_msgctl);
387 CASE(SYS_fcntl);
388 CASE(SYS_flock);
389 CASE(SYS_fsync);
390 CASE(SYS_fdatasync);
391 CASE(SYS_truncate);
392 CASE(SYS_ftruncate);
393 CASE(SYS_getdents);
394 CASE(SYS_getcwd);
395 CASE(SYS_chdir);
396 CASE(SYS_fchdir);
397 CASE(SYS_rename);
398 CASE(SYS_mkdir);
399 CASE(SYS_rmdir);
400 CASE(SYS_link);
401 CASE(SYS_unlink);
402 CASE(SYS_symlink);
403 CASE(SYS_readlink);
404 CASE(SYS_chmod);
405 CASE(SYS_fchmod);
406 CASE(SYS_chown);
407 CASE(SYS_fchown);
408 CASE(SYS_lchown);
409 CASE(SYS_umask);
410 CASE(SYS_gettimeofday);
411 CASE(SYS_getrlimit);
412 CASE(SYS_getrusage);
413 CASE(SYS_sysinfo);
414 CASE(SYS_times);
415 CASE(SYS_ptrace);
416 CASE(SYS_syslog);
417 CASE(SYS_setuid);
418 CASE(SYS_setgid);
419 CASE(SYS_setpgid);
420 CASE(SYS_getpgrp);
421 CASE(SYS_setsid);
422 CASE(SYS_setreuid);
423 CASE(SYS_setregid);
424 CASE(SYS_getgroups);
425 CASE(SYS_setgroups);
426 CASE(SYS_setresuid);
427 CASE(SYS_getresuid);
428 CASE(SYS_setresgid);
429 CASE(SYS_getresgid);
430 CASE(SYS_getpgid);
431 CASE(SYS_setfsuid);
432 CASE(SYS_setfsgid);
433 CASE(SYS_getsid);
434 CASE(SYS_capget);
435 CASE(SYS_capset);
436 CASE(SYS_rt_sigpending);
437 CASE(SYS_rt_sigtimedwait);
438 CASE(SYS_rt_sigqueueinfo);
439 CASE(SYS_rt_sigsuspend);
440 CASE(SYS_sigaltstack);
441 CASE(SYS_mknod);
442 CASE(SYS_personality);
443 CASE(SYS_ustat);
444 CASE(SYS_statfs);
445 CASE(SYS_fstatfs);
446 CASE(SYS_getpriority);
447 CASE(SYS_setpriority);
448 CASE(SYS_sched_setparam);
449 CASE(SYS_sched_getparam);
450 CASE(SYS_sched_setscheduler);
451 CASE(SYS_sched_getscheduler);
452 CASE(SYS_sched_get_priority_max);
453 CASE(SYS_sched_get_priority_min);
454 CASE(SYS_sched_rr_get_interval);
455 CASE(SYS_mlock);
456 CASE(SYS_munlock);
457 CASE(SYS_mlockall);
458 CASE(SYS_munlockall);
459 CASE(SYS_vhangup);
460 CASE(SYS_pivot_root);
461 CASE(SYS__sysctl);
462 CASE(SYS_prctl);
463 CASE(SYS_adjtimex);
464 CASE(SYS_setrlimit);
465 CASE(SYS_chroot);
466 CASE(SYS_sync);
467 CASE(SYS_acct);
468 CASE(SYS_settimeofday);
469 CASE(SYS_mount);
470 CASE(SYS_swapon);
471 CASE(SYS_swapoff);
472 CASE(SYS_reboot);
473 CASE(SYS_sethostname);
474 CASE(SYS_setdomainname);
475 CASE(SYS_init_module);
476 CASE(SYS_delete_module);
477 CASE(SYS_quotactl);
478 CASE(SYS_nfsservctl);
479 CASE(SYS_gettid);
480 CASE(SYS_readahead);
481 CASE(SYS_setxattr);
482 CASE(SYS_lsetxattr);
483 CASE(SYS_fsetxattr);
484 CASE(SYS_getxattr);
485 CASE(SYS_lgetxattr);
486 CASE(SYS_fgetxattr);
487 CASE(SYS_listxattr);
488 CASE(SYS_llistxattr);
489 CASE(SYS_flistxattr);
490 CASE(SYS_removexattr);
491 CASE(SYS_lremovexattr);
492 CASE(SYS_fremovexattr);
493 CASE(SYS_tkill);
494 CASE(SYS_futex);
495 CASE(SYS_sched_setaffinity);
496 CASE(SYS_sched_getaffinity);
497 CASE(SYS_io_setup);
498 CASE(SYS_io_destroy);
499 CASE(SYS_io_getevents);
500 CASE(SYS_io_submit);
501 CASE(SYS_io_cancel);
502 CASE(SYS_lookup_dcookie);
503 CASE(SYS_epoll_create);
504 CASE(SYS_remap_file_pages);
505 CASE(SYS_getdents64);
506 CASE(SYS_set_tid_address);
507 CASE(SYS_restart_syscall);
508 CASE(SYS_semtimedop);
509 CASE(SYS_fadvise64);
510 CASE(SYS_timer_create);
511 CASE(SYS_timer_settime);
512 CASE(SYS_timer_gettime);
513 CASE(SYS_timer_getoverrun);
514 CASE(SYS_timer_delete);
515 CASE(SYS_clock_settime);
516 CASE(SYS_clock_gettime);
517 CASE(SYS_clock_getres);
518 CASE(SYS_clock_nanosleep);
519 CASE(SYS_exit_group);
520 CASE(SYS_epoll_wait);
521 CASE(SYS_epoll_ctl);
522 CASE(SYS_tgkill);
523 CASE(SYS_mbind);
524 CASE(SYS_set_mempolicy);
525 CASE(SYS_get_mempolicy);
526 CASE(SYS_mq_open);
527 CASE(SYS_mq_unlink);
528 CASE(SYS_mq_timedsend);
529 CASE(SYS_mq_timedreceive);
530 CASE(SYS_mq_notify);
531 CASE(SYS_mq_getsetattr);
532 CASE(SYS_kexec_load);
533 CASE(SYS_waitid);
534 CASE(SYS_add_key);
535 CASE(SYS_request_key);
536 CASE(SYS_keyctl);
537 CASE(SYS_ioprio_set);
538 CASE(SYS_ioprio_get);
539 CASE(SYS_inotify_init);
540 CASE(SYS_inotify_add_watch);
541 CASE(SYS_inotify_rm_watch);
542 CASE(SYS_migrate_pages);
543 CASE(SYS_openat);
544 CASE(SYS_mkdirat);
545 CASE(SYS_mknodat);
546 CASE(SYS_fchownat);
547 CASE(SYS_futimesat);
548 CASE(SYS_unlinkat);
549 CASE(SYS_renameat);
550 CASE(SYS_linkat);
551 CASE(SYS_symlinkat);
552 CASE(SYS_readlinkat);
553 CASE(SYS_fchmodat);
554 CASE(SYS_faccessat);
555 CASE(SYS_pselect6);
556 CASE(SYS_ppoll);
557 CASE(SYS_unshare);
558 CASE(SYS_set_robust_list);
559 CASE(SYS_get_robust_list);
560 CASE(SYS_splice);
561 CASE(SYS_tee);
562 CASE(SYS_sync_file_range);
563 CASE(SYS_vmsplice);
564 CASE(SYS_move_pages);
565 CASE(SYS_epoll_pwait);
566 CASE(SYS_signalfd);
567 CASE(SYS_timerfd_create);
568 CASE(SYS_eventfd);
569 CASE(SYS_fallocate);
570 CASE(SYS_timerfd_settime);
571 CASE(SYS_timerfd_gettime);
572 CASE(SYS_accept4);
573 CASE(SYS_signalfd4);
574 CASE(SYS_eventfd2);
575 CASE(SYS_epoll_create1);
576 CASE(SYS_dup3);
577 CASE(SYS_pipe2);
578 CASE(SYS_inotify_init1);
579 CASE(SYS_preadv);
580 CASE(SYS_pwritev);
581 CASE(SYS_rt_tgsigqueueinfo);
582 CASE(SYS_perf_event_open);
583 CASE(SYS_recvmmsg);
584 CASE(SYS_fanotify_init);
585 CASE(SYS_fanotify_mark);
586 CASE(SYS_prlimit64);
587 CASE(SYS_name_to_handle_at);
588 CASE(SYS_open_by_handle_at);
589 CASE(SYS_clock_adjtime);
590 CASE(SYS_syncfs);
591 CASE(SYS_sendmmsg);
592 CASE(SYS_setns);
593 CASE(SYS_getcpu);
594 CASE(SYS_process_vm_readv);
595 CASE(SYS_process_vm_writev);
596 CASE(SYS_kcmp);
597 CASE(SYS_finit_module);
598
599#ifndef KYLIN_MIPS64
600 CASE(SYS_sched_setattr);
601 CASE(SYS_sched_getattr);
602 CASE(SYS_renameat2);
603 CASE(SYS_getrandom);
604 CASE(SYS_memfd_create);
605 CASE(SYS_execveat);
606#endif
607
608 CASE(SYS_init_buffers);
609 CASE(SYS_flush_buffers);
610 CASE(SYS_share_name);
611 CASE(SYS_enable_dump);
612 CASE(SYS_update_maps);
613 CASE(SYS_dump_x11);
614 CASE(SYS_dump_dbus);
615
616#if !defined(__aarch64__)
617 CASE(SYS_sysfs);
618 CASE(SYS_get_kernel_syms);
619 CASE(SYS_query_module);
620 CASE(SYS_afs_syscall);
621 CASE(SYS_vserver);
622#endif
623
624#if defined(__aarch64__)
625 CASE(SYS_fstatat);
626#elif defined(__x86_64__) || defined(__mips64)
627 CASE(SYS_shmat);
628 CASE(SYS_pause);
629 CASE(SYS_alarm);
630 CASE(SYS_getpid);
631 CASE(SYS_creat);
632 CASE(SYS_getuid);
633 CASE(SYS_getgid);
634 CASE(SYS_geteuid);
635 CASE(SYS_getegid);
636 CASE(SYS_getppid);
637 CASE(SYS_utime);
638 CASE(SYS_umount2);
639 CASE(SYS_create_module);
640 CASE(SYS_getpmsg);
641 CASE(SYS_putpmsg);
642 CASE(SYS_set_thread_area);
643 CASE(SYS_utimes);
644 CASE(SYS_newfstatat);
645 CASE(SYS_utimensat);
646
647#ifndef KYLIN_MIPS64
648 CASE(SYS_seccomp);
649 CASE(SYS_bpf);
650 CASE(SYS_userfaultfd);
651 CASE(SYS_membarrier);
652 CASE(SYS_mlock2);
653#endif
654
655#elif defined(__sw_64)
656 CASE(SYS_bdflush);
657 CASE(SYS_create_module);
658 CASE(SYS_dipc);
659 CASE(SYS_exec_with_loader);
660 CASE(SYS_fstat64);
661 CASE(SYS_fstatat64);
662 CASE(SYS_getdtablesize);
663 CASE(SYS_gethostname);
664 CASE(SYS_getpagesize);
665 CASE(SYS_getxgid);
666 CASE(SYS_getxpid);
667 CASE(SYS_getxuid);
668 CASE(SYS_lstat64);
669 CASE(SYS_old_adjtimex);
670 CASE(SYS_oldumount);
671 CASE(SYS_osf_adjtime);
672 CASE(SYS_osf_afs_syscall);
673 CASE(SYS_osf_alt_plock);
674 CASE(SYS_osf_alt_setsid);
675 CASE(SYS_osf_alt_sigpending);
676 CASE(SYS_osf_asynch_daemon);
677 CASE(SYS_osf_audcntl);
678 CASE(SYS_osf_audgen);
679 CASE(SYS_osf_chflags);
680 CASE(SYS_osf_execve);
681 CASE(SYS_osf_exportfs);
682 CASE(SYS_osf_fchflags);
683 CASE(SYS_osf_fdatasync);
684 CASE(SYS_osf_fpathconf);
685 CASE(SYS_osf_fstat);
686 CASE(SYS_osf_fstatfs);
687 CASE(SYS_osf_fstatfs64);
688 CASE(SYS_osf_fuser);
689 CASE(SYS_osf_getaddressconf);
690 CASE(SYS_osf_getdirentries);
691 CASE(SYS_osf_getdomainname);
692 CASE(SYS_osf_getfh);
693 CASE(SYS_osf_getfsstat);
694 CASE(SYS_osf_gethostid);
695 CASE(SYS_osf_getitimer);
696 CASE(SYS_osf_getlogin);
697 CASE(SYS_osf_getmnt);
698 CASE(SYS_osf_getrusage);
699 CASE(SYS_osf_getsysinfo);
700 CASE(SYS_osf_gettimeofday);
701 CASE(SYS_osf_kloadcall);
702 CASE(SYS_osf_kmodcall);
703 CASE(SYS_osf_lstat);
704 CASE(SYS_osf_memcntl);
705 CASE(SYS_osf_mincore);
706 CASE(SYS_osf_mount);
707 CASE(SYS_osf_mremap);
708 CASE(SYS_osf_msfs_syscall);
709 CASE(SYS_osf_msleep);
710 CASE(SYS_osf_mvalid);
711 CASE(SYS_osf_mwakeup);
712 CASE(SYS_osf_naccept);
713 CASE(SYS_osf_nfssvc);
714 CASE(SYS_osf_ngetpeername);
715 CASE(SYS_osf_ngetsockname);
716 CASE(SYS_osf_nrecvfrom);
717 CASE(SYS_osf_nrecvmsg);
718 CASE(SYS_osf_nsendmsg);
719 CASE(SYS_osf_ntp_adjtime);
720 CASE(SYS_osf_ntp_gettime);
721 CASE(SYS_osf_old_creat);
722 CASE(SYS_osf_old_fstat);
723 CASE(SYS_osf_old_getpgrp);
724 CASE(SYS_osf_old_killpg);
725 CASE(SYS_osf_old_lstat);
726 CASE(SYS_osf_old_open);
727 CASE(SYS_osf_old_sigaction);
728 CASE(SYS_osf_old_sigblock);
729 CASE(SYS_osf_old_sigreturn);
730 CASE(SYS_osf_old_sigsetmask);
731 CASE(SYS_osf_old_sigvec);
732 CASE(SYS_osf_old_stat);
733 CASE(SYS_osf_old_vadvise);
734 CASE(SYS_osf_old_vtrace);
735 CASE(SYS_osf_old_wait);
736 CASE(SYS_osf_oldquota);
737 CASE(SYS_osf_pathconf);
738 CASE(SYS_osf_pid_block);
739 CASE(SYS_osf_pid_unblock);
740 CASE(SYS_osf_plock);
741 CASE(SYS_osf_priocntlset);
742 CASE(SYS_osf_profil);
743 CASE(SYS_osf_proplist_syscall);
744 CASE(SYS_osf_reboot);
745 CASE(SYS_osf_revoke);
746 CASE(SYS_osf_sbrk);
747 CASE(SYS_osf_security);
748 CASE(SYS_osf_select);
749 CASE(SYS_osf_set_program_attributes);
750 CASE(SYS_osf_set_speculative);
751 CASE(SYS_osf_sethostid);
752 CASE(SYS_osf_setitimer);
753 CASE(SYS_osf_setlogin);
754 CASE(SYS_osf_setsysinfo);
755 CASE(SYS_osf_settimeofday);
756 CASE(SYS_osf_shmat);
757 CASE(SYS_osf_signal);
758 CASE(SYS_osf_sigprocmask);
759 CASE(SYS_osf_sigsendset);
760 CASE(SYS_osf_sigstack);
761 CASE(SYS_osf_sigwaitprim);
762 CASE(SYS_osf_sstk);
763 CASE(SYS_osf_stat);
764 CASE(SYS_osf_statfs);
765 CASE(SYS_osf_statfs64);
766 CASE(SYS_osf_subsys_info);
767 CASE(SYS_osf_swapctl);
768 CASE(SYS_osf_swapon);
769 CASE(SYS_osf_syscall);
770 CASE(SYS_osf_sysinfo);
771 CASE(SYS_osf_table);
772 CASE(SYS_osf_uadmin);
773 CASE(SYS_osf_usleep_thread);
774 CASE(SYS_osf_uswitch);
775 CASE(SYS_osf_utc_adjtime);
776 CASE(SYS_osf_utc_gettime);
777 CASE(SYS_osf_utimes);
778 CASE(SYS_osf_utsname);
779 CASE(SYS_osf_wait4);
780 CASE(SYS_osf_waitid);
781 CASE(SYS_pciconfig_iobase);
782 CASE(SYS_pciconfig_read);
783 CASE(SYS_pciconfig_write);
784 CASE(SYS_recv);
785 CASE(SYS_select);
786 CASE(SYS_send);
787 CASE(SYS_sethae);
788 CASE(SYS_setpgrp);
789 CASE(SYS_sigaction);
790 CASE(SYS_sigpending);
791 CASE(SYS_sigreturn);
792 CASE(SYS_sigsuspend);
793 CASE(SYS_stat64);
794 CASE(SYS_timerfd);
795 CASE(SYS_tuxcall);
796 CASE(SYS_umount);
797 CASE(SYS_uselib);
798 CASE(SYS_utimensat);
799 CASE(SYS_utimes);
800 CASE(SYS_vfork);
801#endif
802
803 default:
804 {
805 static char buf[32];
806 sprintf(buf, "UNKN:%ld", call);
807 return buf;
808 }
809 }
810}
811
812static const char* x11_event_name[] = {
813#if 0 // Must implement
814 "KeyPress",
815 "KeyRelease",
816 "ButtonPress",
817 "ButtonRelease",
818 "MotionNotify",
819 "FocusIn",
820 "FocusOut",
821 "CreateNotify",
822 "DestroyNotify",
823 "MapNotify",
824 "UnmapNotify",
825#else // see /usr/include/X11/X.h
826 "Error",
827 "Reply",
828 "KeyPress", //2
829 "KeyRelease", //3
830 "ButtonPress", //4
831 "ButtonRelease", //5
832 "MotionNotify", //6
833 "EnterNotify", //7
834 "LeaveNotify", //8
835 "FocusIn", //9
836 "FocusOut", //10
837 "KeymapNotify", //11
838 "Expose", //12
839 "GraphicsExpose", //13
840 "NoExpose", //14
841 "VisibilityNotify", //15
842 "CreateNotify", //16
843 "DestroyNotify", //17
844 "UnmapNotify", //18
845 "MapNotify", //19
846#endif
847};
848
849static const char* dbus_msg_name[] = {
850 "invalid-message",
851 "method-call",
852 "method-return",
853 "method-error",
854 "send-signal",
855 "receive-signal",
856};
857
858const char* get_event_name(int type)
859{
860 if (type < __NR_Linux) {
861 return syscall_name(type - DUMP_REASON_syscall_exit);
862 }
863 else if ( type < DUMP_REASON_signal) {
864 return syscall_name(type);
865 }
866 else if ( type < DUMP_REASON_dbus) {
867 int sig = type - DUMP_REASON_signal;
868 return signal_name(sig);
869 }
870 else if ( type < DUMP_REASON_x11) {
871 unsigned int msg = type - DUMP_REASON_dbus;
872 if (msg < sizeof(dbus_msg_name)/sizeof(dbus_msg_name[0]))
873 return dbus_msg_name[msg];
874 else
875 return dbus_msg_name[0];
876 }
877 else if ( type < DUMP_REASON_ptrace) {
878 unsigned int x11 = type - DUMP_REASON_x11;
879 if (x11 < sizeof(x11_event_name)/sizeof(x11_event_name[0]))
880 return x11_event_name[x11];
881 else
882 return x11_event_name[0];
883 }
884 else {
885 return "Unknown";
886 }
887
888 return nullptr;
889}
890