From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Taeung Song <treeze.taeung@gmail.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 17/18] perf annotate: Refactor the code to parse disassemble lines with {l,r}trim()
Date: Tue, 11 Apr 2017 21:52:14 -0300 [thread overview]
Message-ID: <20170412005215.30135-18-acme@kernel.org> (raw)
In-Reply-To: <20170412005215.30135-1-acme@kernel.org>
From: Taeung Song <treeze.taeung@gmail.com>
When parsing disassemble lines, use ltrim() and rtrim() to strip them,
not using just while loop and isspace().
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1491612748-1605-2-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/annotate.c | 42 +++++++-----------------------------------
1 file changed, 7 insertions(+), 35 deletions(-)
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 44ed6652b02f..204790db10f1 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -387,9 +387,7 @@ static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map *m
if (comment == NULL)
return 0;
- while (comment[0] != '\0' && isspace(comment[0]))
- ++comment;
-
+ comment = ltrim(comment);
comment__symbol(ops->source.raw, comment, &ops->source.addr, &ops->source.name);
comment__symbol(ops->target.raw, comment, &ops->target.addr, &ops->target.name);
@@ -434,9 +432,7 @@ static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops
if (comment == NULL)
return 0;
- while (comment[0] != '\0' && isspace(comment[0]))
- ++comment;
-
+ comment = ltrim(comment);
comment__symbol(ops->target.raw, comment, &ops->target.addr, &ops->target.name);
return 0;
@@ -785,10 +781,7 @@ static void disasm_line__init_ins(struct disasm_line *dl, struct arch *arch, str
static int disasm_line__parse(char *line, const char **namep, char **rawp)
{
- char *name = line, tmp;
-
- while (isspace(name[0]))
- ++name;
+ char tmp, *name = ltrim(line);
if (name[0] == '\0')
return -1;
@@ -806,12 +799,7 @@ static int disasm_line__parse(char *line, const char **namep, char **rawp)
goto out_free_name;
(*rawp)[0] = tmp;
-
- if ((*rawp)[0] != '\0') {
- (*rawp)++;
- while (isspace((*rawp)[0]))
- ++(*rawp);
- }
+ *rawp = ltrim(*rawp);
return 0;
@@ -1156,7 +1144,7 @@ static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
{
struct annotation *notes = symbol__annotation(sym);
struct disasm_line *dl;
- char *line = NULL, *parsed_line, *tmp, *tmp2, *c;
+ char *line = NULL, *parsed_line, *tmp, *tmp2;
size_t line_len;
s64 line_ip, offset = -1;
regmatch_t match[2];
@@ -1167,15 +1155,8 @@ static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
if (!line)
return -1;
- while (line_len != 0 && isspace(line[line_len - 1]))
- line[--line_len] = '\0';
-
- c = strchr(line, '\n');
- if (c)
- *c = 0;
-
line_ip = -1;
- parsed_line = line;
+ parsed_line = rtrim(line);
/* /filename:linenr ? Save line number and ignore. */
if (regexec(&file_lineno, line, 2, match, 0) == 0) {
@@ -1183,16 +1164,7 @@ static int symbol__parse_objdump_line(struct symbol *sym, struct map *map,
return 0;
}
- /*
- * Strip leading spaces:
- */
- tmp = line;
- while (*tmp) {
- if (*tmp != ' ')
- break;
- tmp++;
- }
-
+ tmp = ltrim(parsed_line);
if (*tmp) {
/*
* Parse hexa addresses followed by ':'
--
2.9.3
next prev parent reply other threads:[~2017-04-12 0:54 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-12 0:51 [GIT PULL 00/18] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-04-12 0:51 ` [PATCH 01/18] perf callchains: Switch from strtok() to strtok_r() when parsing options Arnaldo Carvalho de Melo
2017-04-12 0:51 ` [PATCH 02/18] perf script: Use strtok_r() when parsing output field list Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 03/18] perf evsel: Return exact sub event which failed with EPERM for wildcards Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 04/18] perf stat: Refactor the code to strip csv output with ltrim() Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 05/18] perf ui browser: Refactor the code to parse color configs " Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 06/18] perf pmu: Refactor wordwrap() " Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 07/18] perf tools: Refactor the code to strip command name with {l,r}trim() Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 08/18] perf string: Simplify ltrim() implementation Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 09/18] perf annotate s390: Fix perf annotate error -95 (4.10 regression) Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 10/18] perf annotate s390: Implement jump types for perf annotate Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 11/18] perf inject: Don't proceed if perf_session__process_event() fails Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 12/18] perf inject: Copy events when reordering events in pipe mode Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 13/18] perf tools: Describe pipe mode in perf.data-file-fomat.txt Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 14/18] perf annotate: Process attr and build_id records Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 15/18] perf session: Don't rely on evlist in pipe mode Arnaldo Carvalho de Melo
2017-04-12 0:52 ` [PATCH 16/18] perf tools: Do not print missing features in pipe-mode Arnaldo Carvalho de Melo
2017-04-12 0:52 ` Arnaldo Carvalho de Melo [this message]
2017-04-12 0:52 ` [PATCH 18/18] perf annotate: Use stripped line instead of raw disassemble line Arnaldo Carvalho de Melo
2017-04-12 5:30 ` [GIT PULL 00/18] perf/core improvements and fixes Ingo Molnar
2017-04-12 7:13 ` Christian Borntraeger
2017-04-12 7:24 ` Ingo Molnar
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=20170412005215.30135-18-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=treeze.taeung@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.