aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2016-05-23 15:37:55 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-05-23 15:41:00 -0400
commit12f3ca4fc8e27aa602c9c3c717d755b1e8f7fd47 (patch)
tree440446ce36e747dabfc2634ba2bc858b8566520d /tools
parentb6565c908ad7eb28dfdda9578ec5a074e080cedc (diff)
perf trace: Use the ptr->name beautifier as default for "filename" args
Auto-attach the ptr->name beautifier to syscall args "filename", "path" and "pathname" if they are of type "const char *". Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Milian Wolff <milian.wolff@kdab.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-jxii4qmcgoppftv0zdvml9d7@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/builtin-trace.c120
1 files changed, 43 insertions, 77 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 181f69cd6a8e..5c50fe70d6b3 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -576,44 +576,36 @@ static struct syscall_fmt {
576 bool hexret; 576 bool hexret;
577} syscall_fmts[] = { 577} syscall_fmts[] = {
578 { .name = "access", .errmsg = true, 578 { .name = "access", .errmsg = true,
579 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ 579 .arg_scnprintf = { [1] = SCA_ACCMODE, /* mode */ }, },
580 [1] = SCA_ACCMODE, /* mode */ }, },
581 { .name = "arch_prctl", .errmsg = true, .alias = "prctl", }, 580 { .name = "arch_prctl", .errmsg = true, .alias = "prctl", },
582 { .name = "bpf", .errmsg = true, STRARRAY(0, cmd, bpf_cmd), }, 581 { .name = "bpf", .errmsg = true, STRARRAY(0, cmd, bpf_cmd), },
583 { .name = "brk", .hexret = true, 582 { .name = "brk", .hexret = true,
584 .arg_scnprintf = { [0] = SCA_HEX, /* brk */ }, }, 583 .arg_scnprintf = { [0] = SCA_HEX, /* brk */ }, },
585 { .name = "chdir", .errmsg = true, 584 { .name = "chdir", .errmsg = true, },
586 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, }, 585 { .name = "chmod", .errmsg = true, },
587 { .name = "chmod", .errmsg = true, 586 { .name = "chroot", .errmsg = true, },
588 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
589 { .name = "chroot", .errmsg = true,
590 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
591 { .name = "clock_gettime", .errmsg = true, STRARRAY(0, clk_id, clockid), }, 587 { .name = "clock_gettime", .errmsg = true, STRARRAY(0, clk_id, clockid), },
592 { .name = "clone", .errpid = true, }, 588 { .name = "clone", .errpid = true, },
593 { .name = "close", .errmsg = true, 589 { .name = "close", .errmsg = true,
594 .arg_scnprintf = { [0] = SCA_CLOSE_FD, /* fd */ }, }, 590 .arg_scnprintf = { [0] = SCA_CLOSE_FD, /* fd */ }, },
595 { .name = "connect", .errmsg = true, }, 591 { .name = "connect", .errmsg = true, },
596 { .name = "creat", .errmsg = true, 592 { .name = "creat", .errmsg = true, },
597 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
598 { .name = "dup", .errmsg = true, }, 593 { .name = "dup", .errmsg = true, },
599 { .name = "dup2", .errmsg = true, }, 594 { .name = "dup2", .errmsg = true, },
600 { .name = "dup3", .errmsg = true, }, 595 { .name = "dup3", .errmsg = true, },
601 { .name = "epoll_ctl", .errmsg = true, STRARRAY(1, op, epoll_ctl_ops), }, 596 { .name = "epoll_ctl", .errmsg = true, STRARRAY(1, op, epoll_ctl_ops), },
602 { .name = "eventfd2", .errmsg = true, 597 { .name = "eventfd2", .errmsg = true,
603 .arg_scnprintf = { [1] = SCA_EFD_FLAGS, /* flags */ }, }, 598 .arg_scnprintf = { [1] = SCA_EFD_FLAGS, /* flags */ }, },
604 { .name = "faccessat", .errmsg = true, 599 { .name = "faccessat", .errmsg = true, },
605 .arg_scnprintf = { [1] = SCA_FILENAME, /* filename */ }, },
606 { .name = "fadvise64", .errmsg = true, }, 600 { .name = "fadvise64", .errmsg = true, },
607 { .name = "fallocate", .errmsg = true, }, 601 { .name = "fallocate", .errmsg = true, },
608 { .name = "fchdir", .errmsg = true, }, 602 { .name = "fchdir", .errmsg = true, },
609 { .name = "fchmod", .errmsg = true, }, 603 { .name = "fchmod", .errmsg = true, },
610 { .name = "fchmodat", .errmsg = true, 604 { .name = "fchmodat", .errmsg = true,
611 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ 605 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
612 [1] = SCA_FILENAME, /* filename */ }, },
613 { .name = "fchown", .errmsg = true, }, 606 { .name = "fchown", .errmsg = true, },
614 { .name = "fchownat", .errmsg = true, 607 { .name = "fchownat", .errmsg = true,
615 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ 608 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
616 [1] = SCA_FILENAME, /* filename */ }, },
617 { .name = "fcntl", .errmsg = true, 609 { .name = "fcntl", .errmsg = true,
618 .arg_scnprintf = { [1] = SCA_STRARRAY, /* cmd */ }, 610 .arg_scnprintf = { [1] = SCA_STRARRAY, /* cmd */ },
619 .arg_parm = { [1] = &strarray__fcntl_cmds, /* cmd */ }, }, 611 .arg_parm = { [1] = &strarray__fcntl_cmds, /* cmd */ }, },
@@ -622,16 +614,14 @@ static struct syscall_fmt {
622 .arg_scnprintf = { [1] = SCA_FLOCK, /* cmd */ }, }, 614 .arg_scnprintf = { [1] = SCA_FLOCK, /* cmd */ }, },
623 { .name = "fsetxattr", .errmsg = true, }, 615 { .name = "fsetxattr", .errmsg = true, },
624 { .name = "fstat", .errmsg = true, .alias = "newfstat", }, 616 { .name = "fstat", .errmsg = true, .alias = "newfstat", },
625 { .name = "fstatat", .errmsg = true, .alias = "newfstatat", 617 { .name = "fstatat", .errmsg = true, .alias = "newfstatat", },
626 .arg_scnprintf = { [1] = SCA_FILENAME, /* filename */ }, },
627 { .name = "fstatfs", .errmsg = true, }, 618 { .name = "fstatfs", .errmsg = true, },
628 { .name = "fsync", .errmsg = true, }, 619 { .name = "fsync", .errmsg = true, },
629 { .name = "ftruncate", .errmsg = true, }, 620 { .name = "ftruncate", .errmsg = true, },
630 { .name = "futex", .errmsg = true, 621 { .name = "futex", .errmsg = true,
631 .arg_scnprintf = { [1] = SCA_FUTEX_OP, /* op */ }, }, 622 .arg_scnprintf = { [1] = SCA_FUTEX_OP, /* op */ }, },
632 { .name = "futimesat", .errmsg = true, 623 { .name = "futimesat", .errmsg = true,
633 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ 624 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
634 [1] = SCA_FILENAME, /* filename */ }, },
635 { .name = "getdents", .errmsg = true, }, 625 { .name = "getdents", .errmsg = true, },
636 { .name = "getdents64", .errmsg = true, }, 626 { .name = "getdents64", .errmsg = true, },
637 { .name = "getitimer", .errmsg = true, STRARRAY(0, which, itimers), }, 627 { .name = "getitimer", .errmsg = true, STRARRAY(0, which, itimers), },
@@ -641,10 +631,8 @@ static struct syscall_fmt {
641 { .name = "getrandom", .errmsg = true, 631 { .name = "getrandom", .errmsg = true,
642 .arg_scnprintf = { [2] = SCA_GETRANDOM_FLAGS, /* flags */ }, }, 632 .arg_scnprintf = { [2] = SCA_GETRANDOM_FLAGS, /* flags */ }, },
643 { .name = "getrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), }, 633 { .name = "getrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
644 { .name = "getxattr", .errmsg = true, 634 { .name = "getxattr", .errmsg = true, },
645 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 635 { .name = "inotify_add_watch", .errmsg = true, },
646 { .name = "inotify_add_watch", .errmsg = true,
647 .arg_scnprintf = { [1] = SCA_FILENAME, /* pathname */ }, },
648 { .name = "ioctl", .errmsg = true, 636 { .name = "ioctl", .errmsg = true,
649 .arg_scnprintf = { 637 .arg_scnprintf = {
650#if defined(__i386__) || defined(__x86_64__) 638#if defined(__i386__) || defined(__x86_64__)
@@ -660,40 +648,28 @@ static struct syscall_fmt {
660 { .name = "keyctl", .errmsg = true, STRARRAY(0, option, keyctl_options), }, 648 { .name = "keyctl", .errmsg = true, STRARRAY(0, option, keyctl_options), },
661 { .name = "kill", .errmsg = true, 649 { .name = "kill", .errmsg = true,
662 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, }, 650 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
663 { .name = "lchown", .errmsg = true, 651 { .name = "lchown", .errmsg = true, },
664 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, }, 652 { .name = "lgetxattr", .errmsg = true, },
665 { .name = "lgetxattr", .errmsg = true,
666 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
667 { .name = "linkat", .errmsg = true, 653 { .name = "linkat", .errmsg = true,
668 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, 654 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
669 { .name = "listxattr", .errmsg = true, 655 { .name = "listxattr", .errmsg = true, },
670 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 656 { .name = "llistxattr", .errmsg = true, },
671 { .name = "llistxattr", .errmsg = true, 657 { .name = "lremovexattr", .errmsg = true, },
672 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
673 { .name = "lremovexattr", .errmsg = true,
674 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
675 { .name = "lseek", .errmsg = true, 658 { .name = "lseek", .errmsg = true,
676 .arg_scnprintf = { [2] = SCA_STRARRAY, /* whence */ }, 659 .arg_scnprintf = { [2] = SCA_STRARRAY, /* whence */ },
677 .arg_parm = { [2] = &strarray__whences, /* whence */ }, }, 660 .arg_parm = { [2] = &strarray__whences, /* whence */ }, },
678 { .name = "lsetxattr", .errmsg = true, 661 { .name = "lsetxattr", .errmsg = true, },
679 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 662 { .name = "lstat", .errmsg = true, .alias = "newlstat", },
680 { .name = "lstat", .errmsg = true, .alias = "newlstat", 663 { .name = "lsxattr", .errmsg = true, },
681 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
682 { .name = "lsxattr", .errmsg = true,
683 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
684 { .name = "madvise", .errmsg = true, 664 { .name = "madvise", .errmsg = true,
685 .arg_scnprintf = { [0] = SCA_HEX, /* start */ 665 .arg_scnprintf = { [0] = SCA_HEX, /* start */
686 [2] = SCA_MADV_BHV, /* behavior */ }, }, 666 [2] = SCA_MADV_BHV, /* behavior */ }, },
687 { .name = "mkdir", .errmsg = true, 667 { .name = "mkdir", .errmsg = true, },
688 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
689 { .name = "mkdirat", .errmsg = true, 668 { .name = "mkdirat", .errmsg = true,
690 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ 669 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
691 [1] = SCA_FILENAME, /* pathname */ }, }, 670 { .name = "mknod", .errmsg = true, },
692 { .name = "mknod", .errmsg = true,
693 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
694 { .name = "mknodat", .errmsg = true, 671 { .name = "mknodat", .errmsg = true,
695 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ 672 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
696 [1] = SCA_FILENAME, /* filename */ }, },
697 { .name = "mlock", .errmsg = true, 673 { .name = "mlock", .errmsg = true,
698 .arg_scnprintf = { [0] = SCA_HEX, /* addr */ }, }, 674 .arg_scnprintf = { [0] = SCA_HEX, /* addr */ }, },
699 { .name = "mlockall", .errmsg = true, 675 { .name = "mlockall", .errmsg = true,
@@ -718,17 +694,14 @@ static struct syscall_fmt {
718 { .name = "name_to_handle_at", .errmsg = true, 694 { .name = "name_to_handle_at", .errmsg = true,
719 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, }, 695 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
720 { .name = "newfstatat", .errmsg = true, 696 { .name = "newfstatat", .errmsg = true,
721 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ 697 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
722 [1] = SCA_FILENAME, /* filename */ }, },
723 { .name = "open", .errmsg = true, 698 { .name = "open", .errmsg = true,
724 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ 699 .arg_scnprintf = { [1] = SCA_OPEN_FLAGS, /* flags */ }, },
725 [1] = SCA_OPEN_FLAGS, /* flags */ }, },
726 { .name = "open_by_handle_at", .errmsg = true, 700 { .name = "open_by_handle_at", .errmsg = true,
727 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ 701 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
728 [2] = SCA_OPEN_FLAGS, /* flags */ }, }, 702 [2] = SCA_OPEN_FLAGS, /* flags */ }, },
729 { .name = "openat", .errmsg = true, 703 { .name = "openat", .errmsg = true,
730 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ 704 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
731 [1] = SCA_FILENAME, /* filename */
732 [2] = SCA_OPEN_FLAGS, /* flags */ }, }, 705 [2] = SCA_OPEN_FLAGS, /* flags */ }, },
733 { .name = "perf_event_open", .errmsg = true, 706 { .name = "perf_event_open", .errmsg = true,
734 .arg_scnprintf = { [2] = SCA_INT, /* cpu */ 707 .arg_scnprintf = { [2] = SCA_INT, /* cpu */
@@ -744,11 +717,9 @@ static struct syscall_fmt {
744 { .name = "pwrite", .errmsg = true, .alias = "pwrite64", }, 717 { .name = "pwrite", .errmsg = true, .alias = "pwrite64", },
745 { .name = "pwritev", .errmsg = true, }, 718 { .name = "pwritev", .errmsg = true, },
746 { .name = "read", .errmsg = true, }, 719 { .name = "read", .errmsg = true, },
747 { .name = "readlink", .errmsg = true, 720 { .name = "readlink", .errmsg = true, },
748 .arg_scnprintf = { [0] = SCA_FILENAME, /* path */ }, },
749 { .name = "readlinkat", .errmsg = true, 721 { .name = "readlinkat", .errmsg = true,
750 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ 722 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
751 [1] = SCA_FILENAME, /* pathname */ }, },
752 { .name = "readv", .errmsg = true, }, 723 { .name = "readv", .errmsg = true, },
753 { .name = "recvfrom", .errmsg = true, 724 { .name = "recvfrom", .errmsg = true,
754 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, }, 725 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, },
@@ -756,12 +727,10 @@ static struct syscall_fmt {
756 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, }, 727 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, },
757 { .name = "recvmsg", .errmsg = true, 728 { .name = "recvmsg", .errmsg = true,
758 .arg_scnprintf = { [2] = SCA_MSG_FLAGS, /* flags */ }, }, 729 .arg_scnprintf = { [2] = SCA_MSG_FLAGS, /* flags */ }, },
759 { .name = "removexattr", .errmsg = true, 730 { .name = "removexattr", .errmsg = true, },
760 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
761 { .name = "renameat", .errmsg = true, 731 { .name = "renameat", .errmsg = true,
762 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, }, 732 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
763 { .name = "rmdir", .errmsg = true, 733 { .name = "rmdir", .errmsg = true, },
764 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
765 { .name = "rt_sigaction", .errmsg = true, 734 { .name = "rt_sigaction", .errmsg = true,
766 .arg_scnprintf = { [0] = SCA_SIGNUM, /* sig */ }, }, 735 .arg_scnprintf = { [0] = SCA_SIGNUM, /* sig */ }, },
767 { .name = "rt_sigprocmask", .errmsg = true, STRARRAY(0, how, sighow), }, 736 { .name = "rt_sigprocmask", .errmsg = true, STRARRAY(0, how, sighow), },
@@ -785,8 +754,7 @@ static struct syscall_fmt {
785 { .name = "setitimer", .errmsg = true, STRARRAY(0, which, itimers), }, 754 { .name = "setitimer", .errmsg = true, STRARRAY(0, which, itimers), },
786 { .name = "setpgid", .errmsg = true, }, 755 { .name = "setpgid", .errmsg = true, },
787 { .name = "setrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), }, 756 { .name = "setrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
788 { .name = "setxattr", .errmsg = true, 757 { .name = "setxattr", .errmsg = true, },
789 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
790 { .name = "shutdown", .errmsg = true, }, 758 { .name = "shutdown", .errmsg = true, },
791 { .name = "socket", .errmsg = true, 759 { .name = "socket", .errmsg = true,
792 .arg_scnprintf = { [0] = SCA_STRARRAY, /* family */ 760 .arg_scnprintf = { [0] = SCA_STRARRAY, /* family */
@@ -796,10 +764,8 @@ static struct syscall_fmt {
796 .arg_scnprintf = { [0] = SCA_STRARRAY, /* family */ 764 .arg_scnprintf = { [0] = SCA_STRARRAY, /* family */
797 [1] = SCA_SK_TYPE, /* type */ }, 765 [1] = SCA_SK_TYPE, /* type */ },
798 .arg_parm = { [0] = &strarray__socket_families, /* family */ }, }, 766 .arg_parm = { [0] = &strarray__socket_families, /* family */ }, },
799 { .name = "stat", .errmsg = true, .alias = "newstat", 767 { .name = "stat", .errmsg = true, .alias = "newstat", },
800 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 768 { .name = "statfs", .errmsg = true, },
801 { .name = "statfs", .errmsg = true,
802 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
803 { .name = "swapoff", .errmsg = true, 769 { .name = "swapoff", .errmsg = true,
804 .arg_scnprintf = { [0] = SCA_FILENAME, /* specialfile */ }, }, 770 .arg_scnprintf = { [0] = SCA_FILENAME, /* specialfile */ }, },
805 { .name = "swapon", .errmsg = true, 771 { .name = "swapon", .errmsg = true,
@@ -810,19 +776,14 @@ static struct syscall_fmt {
810 .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, }, 776 .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, },
811 { .name = "tkill", .errmsg = true, 777 { .name = "tkill", .errmsg = true,
812 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, }, 778 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
813 { .name = "truncate", .errmsg = true, 779 { .name = "truncate", .errmsg = true, },
814 .arg_scnprintf = { [0] = SCA_FILENAME, /* path */ }, },
815 { .name = "uname", .errmsg = true, .alias = "newuname", }, 780 { .name = "uname", .errmsg = true, .alias = "newuname", },
816 { .name = "unlinkat", .errmsg = true, 781 { .name = "unlinkat", .errmsg = true,
817 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ 782 .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
818 [1] = SCA_FILENAME, /* pathname */ }, }, 783 { .name = "utime", .errmsg = true, },
819 { .name = "utime", .errmsg = true,
820 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
821 { .name = "utimensat", .errmsg = true, 784 { .name = "utimensat", .errmsg = true,
822 .arg_scnprintf = { [0] = SCA_FDAT, /* dirfd */ 785 .arg_scnprintf = { [0] = SCA_FDAT, /* dirfd */ }, },
823 [1] = SCA_FILENAME, /* filename */ }, }, 786 { .name = "utimes", .errmsg = true, },
824 { .name = "utimes", .errmsg = true,
825 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
826 { .name = "vmsplice", .errmsg = true, }, 787 { .name = "vmsplice", .errmsg = true, },
827 { .name = "wait4", .errpid = true, 788 { .name = "wait4", .errpid = true,
828 .arg_scnprintf = { [2] = SCA_WAITID_OPTIONS, /* options */ }, }, 789 .arg_scnprintf = { [2] = SCA_WAITID_OPTIONS, /* options */ }, },
@@ -1178,6 +1139,11 @@ static int syscall__set_arg_fmts(struct syscall *sc)
1178 for (field = sc->args; field; field = field->next) { 1139 for (field = sc->args; field; field = field->next) {
1179 if (sc->fmt && sc->fmt->arg_scnprintf[idx]) 1140 if (sc->fmt && sc->fmt->arg_scnprintf[idx])
1180 sc->arg_scnprintf[idx] = sc->fmt->arg_scnprintf[idx]; 1141 sc->arg_scnprintf[idx] = sc->fmt->arg_scnprintf[idx];
1142 else if (strcmp(field->type, "const char *") == 0 &&
1143 (strcmp(field->name, "filename") == 0 ||
1144 strcmp(field->name, "path") == 0 ||
1145 strcmp(field->name, "pathname") == 0))
1146 sc->arg_scnprintf[idx] = SCA_FILENAME;
1181 else if (field->flags & FIELD_IS_POINTER) 1147 else if (field->flags & FIELD_IS_POINTER)
1182 sc->arg_scnprintf[idx] = syscall_arg__scnprintf_hex; 1148 sc->arg_scnprintf[idx] = syscall_arg__scnprintf_hex;
1183 else if (strcmp(field->type, "pid_t") == 0) 1149 else if (strcmp(field->type, "pid_t") == 0)