From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>,
linux-kernel@vger.kernel.org, Jiri Olsa <jolsa@kernel.org>,
Wang Nan <wangnan0@huawei.com>
Subject: [PATCH perf/core 2/5] [BUGFIX] perf-probe: Fix to remove dot suffix from second or latter events
Date: Thu, 01 Oct 2015 01:41:30 +0900 [thread overview]
Message-ID: <20150930164130.3733.26573.stgit@localhost.localdomain> (raw)
In-Reply-To: <20150930164126.3733.47708.stgit@localhost.localdomain>
Fix to remove dot suffix (e.g. .const, .isra) from
the second or latter events which has suffix numbers.
Since the previous commit 35a23ff928b0 ("perf probe: Cut
off the gcc optimization postfixes from function name")
didn't care about the suffix numbered events, therefore
we'll have an error when we add additional events on the
same dot suffix functions.
e.g.
----
# ./perf probe -f -a get_sigframe.isra.2.constprop.3 \
-a get_sigframe.isra.2.constprop.3
Failed to write event: Invalid argument
Error: Failed to add events.
----
This fixes above issue as below:
----
# ./perf probe -f -a get_sigframe.isra.2.constprop.3 \
-a get_sigframe.isra.2.constprop.3
Added new events:
probe:get_sigframe (on get_sigframe.isra.2.constprop.3)
probe:get_sigframe_1 (on get_sigframe.isra.2.constprop.3)
You can now use it in all perf tools, such as:
perf record -e probe:get_sigframe_1 -aR sleep 1
----
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
---
tools/perf/util/probe-event.c | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 7fb0533..7eb0239 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -2288,36 +2288,41 @@ static int get_new_event_name(char *buf, size_t len, const char *base,
struct strlist *namelist, bool allow_suffix)
{
int i, ret;
- char *p;
+ char *p, *nbase;
if (*base == '.')
base++;
+ nbase = strdup(base);
+ if (!nbase)
+ return -ENOMEM;
+
+ /* Cut off the dot suffixes (e.g. .const, .isra)*/
+ p = strchr(nbase, '.');
+ if (p && p != nbase)
+ *p = '\0';
- /* Try no suffix */
- ret = e_snprintf(buf, len, "%s", base);
+ /* Try no suffix number */
+ ret = e_snprintf(buf, len, "%s", nbase);
if (ret < 0) {
pr_debug("snprintf() failed: %d\n", ret);
- return ret;
+ goto out;
}
- /* Cut off the postfixes (e.g. .const, .isra)*/
- p = strchr(buf, '.');
- if (p && p != buf)
- *p = '\0';
if (!strlist__has_entry(namelist, buf))
- return 0;
+ goto out;
if (!allow_suffix) {
pr_warning("Error: event \"%s\" already exists. "
- "(Use -f to force duplicates.)\n", base);
- return -EEXIST;
+ "(Use -f to force duplicates.)\n", buf);
+ ret = -EEXIST;
+ goto out;
}
/* Try to add suffix */
for (i = 1; i < MAX_EVENT_INDEX; i++) {
- ret = e_snprintf(buf, len, "%s_%d", base, i);
+ ret = e_snprintf(buf, len, "%s_%d", nbase, i);
if (ret < 0) {
pr_debug("snprintf() failed: %d\n", ret);
- return ret;
+ goto out;
}
if (!strlist__has_entry(namelist, buf))
break;
@@ -2327,6 +2332,8 @@ static int get_new_event_name(char *buf, size_t len, const char *base,
ret = -ERANGE;
}
+out:
+ free(nbase);
return ret;
}
next prev parent reply other threads:[~2015-09-30 16:48 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-30 16:41 [PATCH perf/core 0/5] perf-probe bugfixes Masami Hiramatsu
2015-09-30 16:41 ` [PATCH perf/core 1/5] [BUGFIX] perf-probe: Begin and end report session correctly Masami Hiramatsu
2015-10-01 7:13 ` [tip:perf/core] perf probe: Begin and end libdwfl " tip-bot for Masami Hiramatsu
2015-09-30 16:41 ` Masami Hiramatsu [this message]
2015-10-01 7:12 ` [tip:perf/core] perf probe: Fix to remove dot suffix from second or latter events tip-bot for Masami Hiramatsu
2015-09-30 16:41 ` [PATCH perf/core 3/5] [BUGFIX] perf-probe: Show correct source lines of probes on kmodules Masami Hiramatsu
2015-10-01 7:13 ` [tip:perf/core] perf probe: " tip-bot for Masami Hiramatsu
2015-09-30 16:41 ` [PATCH perf/core 4/5] [BUGFIX] perf-probe: Fix a segfault bug in debuginfo_cache Masami Hiramatsu
2015-10-01 7:14 ` [tip:perf/core] perf probe: " tip-bot for Masami Hiramatsu
2015-09-30 16:41 ` [PATCH perf/core 5/5] perf-probe: Improve error message when %return is on inlined function Masami Hiramatsu
2015-10-01 7:14 ` [tip:perf/core] perf probe: " tip-bot for Masami Hiramatsu
2015-09-30 20:10 ` [PATCH perf/core 0/5] perf-probe bugfixes Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150930164130.3733.26573.stgit@localhost.localdomain \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=acme@kernel.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=namhyung@kernel.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).