@@ -611,77 +611,53 @@ static struct syscall_fmt {
611611 const char * name ;
612612 const char * alias ;
613613 struct syscall_arg_fmt arg [6 ];
614- bool errmsg ;
615614 bool errpid ;
616615 bool timeout ;
617616 bool hexret ;
618617} syscall_fmts [] = {
619- { .name = "access" , . errmsg = true,
618+ { .name = "access" ,
620619 .arg = { [1 ] = { .scnprintf = SCA_ACCMODE , /* mode */ }, }, },
621- { .name = "arch_prctl" , .errmsg = true, . alias = "prctl" , },
622- { .name = "bpf" , . errmsg = true,
620+ { .name = "arch_prctl" , .alias = "prctl" , },
621+ { .name = "bpf" ,
623622 .arg = { [0 ] = STRARRAY (cmd , bpf_cmd ), }, },
624623 { .name = "brk" , .hexret = true,
625624 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* brk */ }, }, },
626- { .name = "chdir" , .errmsg = true, },
627- { .name = "chmod" , .errmsg = true, },
628- { .name = "chroot" , .errmsg = true, },
629- { .name = "clock_gettime" , .errmsg = true,
625+ { .name = "clock_gettime" ,
630626 .arg = { [0 ] = STRARRAY (clk_id , clockid ), }, },
631627 { .name = "clone" , .errpid = true, },
632- { .name = "close" , . errmsg = true,
628+ { .name = "close" ,
633629 .arg = { [0 ] = { .scnprintf = SCA_CLOSE_FD , /* fd */ }, }, },
634- { .name = "connect" , .errmsg = true, },
635- { .name = "creat" , .errmsg = true, },
636- { .name = "dup" , .errmsg = true, },
637- { .name = "dup2" , .errmsg = true, },
638- { .name = "dup3" , .errmsg = true, },
639- { .name = "epoll_ctl" , .errmsg = true,
630+ { .name = "epoll_ctl" ,
640631 .arg = { [1 ] = STRARRAY (op , epoll_ctl_ops ), }, },
641- { .name = "eventfd2" , . errmsg = true,
632+ { .name = "eventfd2" ,
642633 .arg = { [1 ] = { .scnprintf = SCA_EFD_FLAGS , /* flags */ }, }, },
643- { .name = "faccessat" , .errmsg = true, },
644- { .name = "fadvise64" , .errmsg = true, },
645- { .name = "fallocate" , .errmsg = true, },
646- { .name = "fchdir" , .errmsg = true, },
647- { .name = "fchmod" , .errmsg = true, },
648- { .name = "fchmodat" , .errmsg = true,
634+ { .name = "fchmodat" ,
649635 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fd */ }, }, },
650- { .name = "fchown" , .errmsg = true, },
651- { .name = "fchownat" , .errmsg = true,
636+ { .name = "fchownat" ,
652637 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fd */ }, }, },
653- { .name = "fcntl" , . errmsg = true,
638+ { .name = "fcntl" ,
654639 .arg = { [1 ] = { .scnprintf = SCA_FCNTL_CMD , /* cmd */
655640 .parm = & strarrays__fcntl_cmds_arrays ,
656641 .show_zero = true, },
657642 [2 ] = { .scnprintf = SCA_FCNTL_ARG , /* arg */ }, }, },
658- { .name = "fdatasync" , .errmsg = true, },
659- { .name = "flock" , .errmsg = true,
643+ { .name = "flock" ,
660644 .arg = { [1 ] = { .scnprintf = SCA_FLOCK , /* cmd */ }, }, },
661- { .name = "fsetxattr" , .errmsg = true, },
662- { .name = "fstat" , .errmsg = true, .alias = "newfstat" , },
663- { .name = "fstatat" , .errmsg = true, .alias = "newfstatat" , },
664- { .name = "fstatfs" , .errmsg = true, },
665- { .name = "fsync" , .errmsg = true, },
666- { .name = "ftruncate" , .errmsg = true, },
667- { .name = "futex" , .errmsg = true,
645+ { .name = "fstat" , .alias = "newfstat" , },
646+ { .name = "fstatat" , .alias = "newfstatat" , },
647+ { .name = "futex" ,
668648 .arg = { [1 ] = { .scnprintf = SCA_FUTEX_OP , /* op */ }, }, },
669- { .name = "futimesat" , . errmsg = true,
649+ { .name = "futimesat" ,
670650 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fd */ }, }, },
671- { .name = "getdents" , .errmsg = true, },
672- { .name = "getdents64" , .errmsg = true, },
673- { .name = "getitimer" , .errmsg = true,
651+ { .name = "getitimer" ,
674652 .arg = { [0 ] = STRARRAY (which , itimers ), }, },
675653 { .name = "getpid" , .errpid = true, },
676654 { .name = "getpgid" , .errpid = true, },
677655 { .name = "getppid" , .errpid = true, },
678- { .name = "getrandom" , . errmsg = true,
656+ { .name = "getrandom" ,
679657 .arg = { [2 ] = { .scnprintf = SCA_GETRANDOM_FLAGS , /* flags */ }, }, },
680- { .name = "getrlimit" , . errmsg = true,
658+ { .name = "getrlimit" ,
681659 .arg = { [0 ] = STRARRAY (resource , rlimit_resources ), }, },
682- { .name = "getxattr" , .errmsg = true, },
683- { .name = "inotify_add_watch" , .errmsg = true, },
684- { .name = "ioctl" , .errmsg = true,
660+ { .name = "ioctl" ,
685661 .arg = {
686662#if defined(__i386__ ) || defined (__x86_64__ )
687663/*
@@ -693,34 +669,25 @@ static struct syscall_fmt {
693669#else
694670 [2 ] = { .scnprintf = SCA_HEX , /* arg */ }, }, },
695671#endif
696- { .name = "keyctl" , . errmsg = true,
672+ { .name = "keyctl" ,
697673 .arg = { [0 ] = STRARRAY (option , keyctl_options ), }, },
698- { .name = "kill" , . errmsg = true,
674+ { .name = "kill" ,
699675 .arg = { [1 ] = { .scnprintf = SCA_SIGNUM , /* sig */ }, }, },
700- { .name = "lchown" , .errmsg = true, },
701- { .name = "lgetxattr" , .errmsg = true, },
702- { .name = "linkat" , .errmsg = true,
676+ { .name = "linkat" ,
703677 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fd */ }, }, },
704- { .name = "listxattr" , .errmsg = true, },
705- { .name = "llistxattr" , .errmsg = true, },
706- { .name = "lremovexattr" , .errmsg = true, },
707- { .name = "lseek" , .errmsg = true,
678+ { .name = "lseek" ,
708679 .arg = { [2 ] = STRARRAY (whence , whences ), }, },
709- { .name = "lsetxattr" , .errmsg = true, },
710- { .name = "lstat" , .errmsg = true, .alias = "newlstat" , },
711- { .name = "lsxattr" , .errmsg = true, },
712- { .name = "madvise" , .errmsg = true,
680+ { .name = "lstat" , .alias = "newlstat" , },
681+ { .name = "madvise" ,
713682 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* start */ },
714683 [2 ] = { .scnprintf = SCA_MADV_BHV , /* behavior */ }, }, },
715- { .name = "mkdir" , .errmsg = true, },
716- { .name = "mkdirat" , .errmsg = true,
684+ { .name = "mkdirat" ,
717685 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fd */ }, }, },
718- { .name = "mknod" , .errmsg = true, },
719- { .name = "mknodat" , .errmsg = true,
686+ { .name = "mknodat" ,
720687 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fd */ }, }, },
721- { .name = "mlock" , . errmsg = true,
688+ { .name = "mlock" ,
722689 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* addr */ }, }, },
723- { .name = "mlockall" , . errmsg = true,
690+ { .name = "mlockall" ,
724691 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* addr */ }, }, },
725692 { .name = "mmap" , .hexret = true,
726693/* The standard mmap maps to old_mmap on s390x */
@@ -730,127 +697,109 @@ static struct syscall_fmt {
730697 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* addr */ },
731698 [2 ] = { .scnprintf = SCA_MMAP_PROT , /* prot */ },
732699 [3 ] = { .scnprintf = SCA_MMAP_FLAGS , /* flags */ }, }, },
733- { .name = "mprotect" , . errmsg = true,
700+ { .name = "mprotect" ,
734701 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* start */ },
735702 [2 ] = { .scnprintf = SCA_MMAP_PROT , /* prot */ }, }, },
736- { .name = "mq_unlink" , . errmsg = true,
703+ { .name = "mq_unlink" ,
737704 .arg = { [0 ] = { .scnprintf = SCA_FILENAME , /* u_name */ }, }, },
738705 { .name = "mremap" , .hexret = true,
739706 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* addr */ },
740707 [3 ] = { .scnprintf = SCA_MREMAP_FLAGS , /* flags */ },
741708 [4 ] = { .scnprintf = SCA_HEX , /* new_addr */ }, }, },
742- { .name = "munlock" , . errmsg = true,
709+ { .name = "munlock" ,
743710 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* addr */ }, }, },
744- { .name = "munmap" , . errmsg = true,
711+ { .name = "munmap" ,
745712 .arg = { [0 ] = { .scnprintf = SCA_HEX , /* addr */ }, }, },
746- { .name = "name_to_handle_at" , . errmsg = true,
713+ { .name = "name_to_handle_at" ,
747714 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ }, }, },
748- { .name = "newfstatat" , . errmsg = true,
715+ { .name = "newfstatat" ,
749716 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ }, }, },
750- { .name = "open" , . errmsg = true,
717+ { .name = "open" ,
751718 .arg = { [1 ] = { .scnprintf = SCA_OPEN_FLAGS , /* flags */ }, }, },
752- { .name = "open_by_handle_at" , . errmsg = true,
719+ { .name = "open_by_handle_at" ,
753720 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ },
754721 [2 ] = { .scnprintf = SCA_OPEN_FLAGS , /* flags */ }, }, },
755- { .name = "openat" , . errmsg = true,
722+ { .name = "openat" ,
756723 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ },
757724 [2 ] = { .scnprintf = SCA_OPEN_FLAGS , /* flags */ }, }, },
758- { .name = "perf_event_open" , . errmsg = true,
725+ { .name = "perf_event_open" ,
759726 .arg = { [2 ] = { .scnprintf = SCA_INT , /* cpu */ },
760727 [3 ] = { .scnprintf = SCA_FD , /* group_fd */ },
761728 [4 ] = { .scnprintf = SCA_PERF_FLAGS , /* flags */ }, }, },
762- { .name = "pipe2" , . errmsg = true,
729+ { .name = "pipe2" ,
763730 .arg = { [1 ] = { .scnprintf = SCA_PIPE_FLAGS , /* flags */ }, }, },
764- { .name = "poll" , . errmsg = true, .timeout = true, },
765- { .name = "ppoll" , . errmsg = true, .timeout = true, },
766- { .name = "pread" , . errmsg = true, .alias = "pread64" , },
767- { .name = "preadv" , . errmsg = true, .alias = "pread" , },
768- { .name = "prlimit64" , . errmsg = true,
731+ { .name = "poll" , .timeout = true, },
732+ { .name = "ppoll" , .timeout = true, },
733+ { .name = "pread" , .alias = "pread64" , },
734+ { .name = "preadv" , .alias = "pread" , },
735+ { .name = "prlimit64" ,
769736 .arg = { [1 ] = STRARRAY (resource , rlimit_resources ), }, },
770- { .name = "pwrite" , .errmsg = true, .alias = "pwrite64" , },
771- { .name = "pwritev" , .errmsg = true, },
772- { .name = "read" , .errmsg = true, },
773- { .name = "readlink" , .errmsg = true, },
774- { .name = "readlinkat" , .errmsg = true,
737+ { .name = "pwrite" , .alias = "pwrite64" , },
738+ { .name = "readlinkat" ,
775739 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ }, }, },
776- { .name = "readv" , .errmsg = true, },
777- { .name = "recvfrom" , .errmsg = true,
740+ { .name = "recvfrom" ,
778741 .arg = { [3 ] = { .scnprintf = SCA_MSG_FLAGS , /* flags */ }, }, },
779- { .name = "recvmmsg" , . errmsg = true,
742+ { .name = "recvmmsg" ,
780743 .arg = { [3 ] = { .scnprintf = SCA_MSG_FLAGS , /* flags */ }, }, },
781- { .name = "recvmsg" , . errmsg = true,
744+ { .name = "recvmsg" ,
782745 .arg = { [2 ] = { .scnprintf = SCA_MSG_FLAGS , /* flags */ }, }, },
783- { .name = "removexattr" , .errmsg = true, },
784- { .name = "renameat" , .errmsg = true,
746+ { .name = "renameat" ,
785747 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ }, }, },
786- { .name = "rmdir" , .errmsg = true, },
787- { .name = "rt_sigaction" , .errmsg = true,
748+ { .name = "rt_sigaction" ,
788749 .arg = { [0 ] = { .scnprintf = SCA_SIGNUM , /* sig */ }, }, },
789- { .name = "rt_sigprocmask" , . errmsg = true,
750+ { .name = "rt_sigprocmask" ,
790751 .arg = { [0 ] = STRARRAY (how , sighow ), }, },
791- { .name = "rt_sigqueueinfo" , . errmsg = true,
752+ { .name = "rt_sigqueueinfo" ,
792753 .arg = { [1 ] = { .scnprintf = SCA_SIGNUM , /* sig */ }, }, },
793- { .name = "rt_tgsigqueueinfo" , . errmsg = true,
754+ { .name = "rt_tgsigqueueinfo" ,
794755 .arg = { [2 ] = { .scnprintf = SCA_SIGNUM , /* sig */ }, }, },
795- { .name = "sched_getattr" , .errmsg = true, },
796- { .name = "sched_setattr" , .errmsg = true, },
797- { .name = "sched_setscheduler" , .errmsg = true,
756+ { .name = "sched_setscheduler" ,
798757 .arg = { [1 ] = { .scnprintf = SCA_SCHED_POLICY , /* policy */ }, }, },
799- { .name = "seccomp" , . errmsg = true,
758+ { .name = "seccomp" ,
800759 .arg = { [0 ] = { .scnprintf = SCA_SECCOMP_OP , /* op */ },
801760 [1 ] = { .scnprintf = SCA_SECCOMP_FLAGS , /* flags */ }, }, },
802- { .name = "select" , . errmsg = true, .timeout = true, },
803- { .name = "sendmmsg" , . errmsg = true,
761+ { .name = "select" , .timeout = true, },
762+ { .name = "sendmmsg" ,
804763 .arg = { [3 ] = { .scnprintf = SCA_MSG_FLAGS , /* flags */ }, }, },
805- { .name = "sendmsg" , . errmsg = true,
764+ { .name = "sendmsg" ,
806765 .arg = { [2 ] = { .scnprintf = SCA_MSG_FLAGS , /* flags */ }, }, },
807- { .name = "sendto" , . errmsg = true,
766+ { .name = "sendto" ,
808767 .arg = { [3 ] = { .scnprintf = SCA_MSG_FLAGS , /* flags */ }, }, },
809768 { .name = "set_tid_address" , .errpid = true, },
810- { .name = "setitimer" , . errmsg = true,
769+ { .name = "setitimer" ,
811770 .arg = { [0 ] = STRARRAY (which , itimers ), }, },
812- { .name = "setpgid" , .errmsg = true, },
813- { .name = "setrlimit" , .errmsg = true,
771+ { .name = "setrlimit" ,
814772 .arg = { [0 ] = STRARRAY (resource , rlimit_resources ), }, },
815- { .name = "setxattr" , .errmsg = true, },
816- { .name = "shutdown" , .errmsg = true, },
817- { .name = "socket" , .errmsg = true,
773+ { .name = "socket" ,
818774 .arg = { [0 ] = STRARRAY (family , socket_families ),
819775 [1 ] = { .scnprintf = SCA_SK_TYPE , /* type */ }, }, },
820- { .name = "socketpair" , . errmsg = true,
776+ { .name = "socketpair" ,
821777 .arg = { [0 ] = STRARRAY (family , socket_families ),
822778 [1 ] = { .scnprintf = SCA_SK_TYPE , /* type */ }, }, },
823- { .name = "stat" , .errmsg = true, .alias = "newstat" , },
824- { .name = "statfs" , .errmsg = true, },
825- { .name = "statx" , .errmsg = true,
779+ { .name = "stat" , .alias = "newstat" , },
780+ { .name = "statx" ,
826781 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* fdat */ },
827782 [2 ] = { .scnprintf = SCA_STATX_FLAGS , /* flags */ } ,
828783 [3 ] = { .scnprintf = SCA_STATX_MASK , /* mask */ }, }, },
829- { .name = "swapoff" , . errmsg = true,
784+ { .name = "swapoff" ,
830785 .arg = { [0 ] = { .scnprintf = SCA_FILENAME , /* specialfile */ }, }, },
831- { .name = "swapon" , . errmsg = true,
786+ { .name = "swapon" ,
832787 .arg = { [0 ] = { .scnprintf = SCA_FILENAME , /* specialfile */ }, }, },
833- { .name = "symlinkat" , . errmsg = true,
788+ { .name = "symlinkat" ,
834789 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ }, }, },
835- { .name = "tgkill" , . errmsg = true,
790+ { .name = "tgkill" ,
836791 .arg = { [2 ] = { .scnprintf = SCA_SIGNUM , /* sig */ }, }, },
837- { .name = "tkill" , . errmsg = true,
792+ { .name = "tkill" ,
838793 .arg = { [1 ] = { .scnprintf = SCA_SIGNUM , /* sig */ }, }, },
839- { .name = "truncate" , .errmsg = true, },
840- { .name = "uname" , .errmsg = true, .alias = "newuname" , },
841- { .name = "unlinkat" , .errmsg = true,
794+ { .name = "uname" , .alias = "newuname" , },
795+ { .name = "unlinkat" ,
842796 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dfd */ }, }, },
843- { .name = "utime" , .errmsg = true, },
844- { .name = "utimensat" , .errmsg = true,
797+ { .name = "utimensat" ,
845798 .arg = { [0 ] = { .scnprintf = SCA_FDAT , /* dirfd */ }, }, },
846- { .name = "utimes" , .errmsg = true, },
847- { .name = "vmsplice" , .errmsg = true, },
848799 { .name = "wait4" , .errpid = true,
849800 .arg = { [2 ] = { .scnprintf = SCA_WAITID_OPTIONS , /* options */ }, }, },
850801 { .name = "waitid" , .errpid = true,
851802 .arg = { [3 ] = { .scnprintf = SCA_WAITID_OPTIONS , /* options */ }, }, },
852- { .name = "write" , .errmsg = true, },
853- { .name = "writev" , .errmsg = true, },
854803};
855804
856805static int syscall_fmt__cmp (const void * name , const void * fmtp )
@@ -1708,14 +1657,18 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
17081657 }
17091658
17101659 if (sc -> fmt == NULL ) {
1660+ if (ret < 0 )
1661+ goto errno_print ;
17111662signed_print :
1712- fprintf (trace -> output , ") = %ld" , ret );
1713- } else if (ret < 0 && (sc -> fmt -> errmsg || sc -> fmt -> errpid )) {
1663+ fprintf (trace -> output , ") %ld" , ret );
1664+ } else if (ret < 0 ) {
1665+ errno_print : {
17141666 char bf [STRERR_BUFSIZE ];
17151667 const char * emsg = str_error_r (- ret , bf , sizeof (bf )),
17161668 * e = audit_errno_to_name (- ret );
17171669
17181670 fprintf (trace -> output , ") = -1 %s %s" , e , emsg );
1671+ }
17191672 } else if (ret == 0 && sc -> fmt -> timeout )
17201673 fprintf (trace -> output , ") = 0 Timeout" );
17211674 else if (ttrace -> ret_scnprintf ) {
0 commit comments