Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp6309805imd; Wed, 31 Oct 2018 09:46:43 -0700 (PDT) X-Google-Smtp-Source: AJdET5dQno5ciJfWTF+Bd2zoK88F0QqTCzL7BI2TWtvXu1rtNa/hnqZEo8ejk7nG0hsAXPB5I2wU X-Received: by 2002:a63:a16:: with SMTP id 22mr3893153pgk.318.1541004403914; Wed, 31 Oct 2018 09:46:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541004403; cv=none; d=google.com; s=arc-20160816; b=D/VSqi6Cp3gOUYpr1JN41gtoGzPMlrBsyFB65ppMMqzYYsrSsgxGOhteX81uY2pEk+ DkPzH6Iv1NmKXL6pGwtZfLlj1/XiWurde+72YbogwOEbomYZjySsXjr/v9TB30KvneT1 6sukMMCGQNI6+g+UHuT71ZluL08BvD0qJY2/qZhzavE4YbNkVkShnCCujsiSD7KJbclt 0u8CZrVAqQH9D2Pbk7PRGTA0spneevnJ5cWVRZI740V2zR53sdTQRUP6NItfErf7A1Uy U0mRDIkn6sMET6UIwiubbYFPRNaQhGbOgy4mg6yKSml3WrOQxotmSSqzrQK8o7nRu79j vHsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=bpPWjNzgpLnJ1Ghr9/0psj30/pzXykgthoHuzDvv5MQ=; b=p4CJ4mLa+Qd2PYRiCOFG33MaolmlgDMqd1A/xnzXubZQj8fY0PuBWJ6snnzng801DK mPfT+fHF5L92XpSbnzODD1HGyOcY1BXJeuiI6HWGhqNKrNghYI8+62HtDuDiYTe7/FjZ UvrB2qM484yOhU8UZ+8fL0GZfapjV+75dano2O0BGu4aCcpEFsQOagMqMuvwtlNzpYDe Vn1Uco/gixuU9L9j1F0/Sp3qJe0Lc3xL3Nl3Kpsj2PviNZL6A7wLB6CXKTLa6KT97mFQ SA50p4VpNyAEkWuY3CbtWWUvNPFD0nwYDUNTl9dTNYW8IUAb7Ts+pCKNnup+fMiD5U7W v24w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OzpeXSsX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w6-v6si28755282pgw.316.2018.10.31.09.46.28; Wed, 31 Oct 2018 09:46:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=OzpeXSsX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729996AbeKABof (ORCPT + 99 others); Wed, 31 Oct 2018 21:44:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:59120 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729987AbeKABof (ORCPT ); Wed, 31 Oct 2018 21:44:35 -0400 Received: from jouet.infradead.org (unknown [179.97.41.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DC8EA20840; Wed, 31 Oct 2018 16:45:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541004347; bh=sJ8eW/YfPFf+tRJhJcbvlj2PqdJaSjJOqNzp6ifNEoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OzpeXSsXLgAIlxW4hUo+843biGyYRCaaIAG8gLWAWwEpOuocekdMr8WzJBNJF/76b Fn+gbJQ48jqliMOKynQuhMAC5XPJWsCICeIuAyWaQpXqEndz6h8f7Fn1cF297E6SF1 iXW7HpPN3eyu1iK7s2UE2zebLslqU1HEJ9BtadCo= From: Arnaldo Carvalho de Melo To: Ingo Molnar Cc: Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Arnaldo Carvalho de Melo , Adrian Hunter , Benjamin Peterson , David Ahern , Jiri Olsa , Namhyung Kim , Wang Nan Subject: [PATCH 07/28] perf trace: Consider syscall aliases too Date: Wed, 31 Oct 2018 13:44:47 -0300 Message-Id: <20181031164508.4784-8-acme@kernel.org> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20181031164508.4784-1-acme@kernel.org> References: <20181031164508.4784-1-acme@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnaldo Carvalho de Melo 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 [] [] or: perf trace [] -- [] or: perf trace record [] [] or: perf trace record [] -- [] -e, --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 Cc: Benjamin Peterson Cc: David Ahern Cc: Jiri Olsa Cc: Namhyung Kim Cc: Wang Nan Link: https://lkml.kernel.org/n/tip-ukweodgzbmjd25lfkgryeft1@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-trace.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 76c14c0129fc..db8711061ca3 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -862,6 +862,18 @@ static struct syscall_fmt *syscall_fmt__find(const char *name) return bsearch(name, syscall_fmts, nmemb, sizeof(struct syscall_fmt), syscall_fmt__cmp); } +static struct syscall_fmt *syscall_fmt__find_by_alias(const char *alias) +{ + int i, nmemb = ARRAY_SIZE(syscall_fmts); + + for (i = 0; i < nmemb; ++i) { + if (syscall_fmts[i].alias && strcmp(syscall_fmts[i].alias, alias) == 0) + return &syscall_fmts[i]; + } + + return NULL; +} + /* * is_exit: is this "exit" or "exit_group"? * is_open: is this "open" or "openat"? To associate the fd returned in sys_exit with the pathname in sys_enter. @@ -3195,6 +3207,7 @@ static int trace__parse_events_option(const struct option *opt, const char *str, int len = strlen(str) + 1, err = -1, list, idx; char *strace_groups_dir = system_path(STRACE_GROUPS_DIR); char group_name[PATH_MAX]; + struct syscall_fmt *fmt; if (strace_groups_dir == NULL) return -1; @@ -3212,12 +3225,19 @@ static int trace__parse_events_option(const struct option *opt, const char *str, if (syscalltbl__id(trace->sctbl, s) >= 0 || syscalltbl__strglobmatch_first(trace->sctbl, s, &idx) >= 0) { list = 1; + goto do_concat; + } + + fmt = syscall_fmt__find_by_alias(s); + if (fmt != NULL) { + list = 1; + s = fmt->name; } else { path__join(group_name, sizeof(group_name), strace_groups_dir, s); if (access(group_name, R_OK) == 0) list = 1; } - +do_concat: if (lists[list]) { sprintf(lists[list] + strlen(lists[list]), ",%s", s); } else { -- 2.14.4