• Arnaldo Carvalho de Melo's avatar
    perf trace: Consider syscall aliases too · f932184e
    Arnaldo Carvalho de Melo authored
    When trying to trace the 'umount' syscall on x86_64 I noticed that it
    was failing:
    
      # trace -e umount umount /mnt
      event syntax error: 'umount'
                           \___ parser error
      Run 'perf list' for a list of valid events
    
       Usage: perf trace [<options>] [<command>]
          or: perf trace [<options>] -- <command> [<options>]
          or: perf trace record [<options>] [<command>]
          or: perf trace record [<options>] -- <command> [<options>]
    
          -e, --event <event>   event/syscall selector. use 'perf list' to list available events
      #
    
    This is because in the x86-64 we have it just as 'umount2':
    
      $ grep umount arch/x86/entry/syscalls/syscall_64.tbl
      166	common	umount2			__x64_sys_umount
      $
    
    So if the syscall name fails, try fallbacking to looking at the aliases
    we have in the syscall_fmts table to then re-lookup, now:
    
      # trace -e umount umount -f /mnt
      umount: /mnt: not mounted.
         1.759 ( 0.004 ms): umount/18365 umount2(name: 0x55fbfcbc4480, flags: 1) = -1 EINVAL Invalid argument
      #
    
    Time to beautify the flags arg :-)
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Benjamin Peterson <benjamin@python.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-ukweodgzbmjd25lfkgryeft1@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    f932184e
builtin-trace.c 99.7 KB