All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Cc: linux-kernel@vger.kernel.org, anton@ozlabs.org,
	mpe@ellerman.id.au, ananth@in.ibm.com, dja@axtens.net,
	"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
Subject: Re: [RFC 4/6] perf annotate: generalize handling of ret instructions
Date: Mon, 27 Jun 2016 14:34:31 -0300	[thread overview]
Message-ID: <20160627173431.GA27027@kernel.org> (raw)
In-Reply-To: <1466769240-12376-5-git-send-email-ravi.bangoria@linux.vnet.ibm.com>

Em Fri, Jun 24, 2016 at 05:23:58PM +0530, Ravi Bangoria escreveu:
> From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
> 
> Introduce helper to detect ret instructions and use the same in the tui.
> A helper is needed since some architectures such as powerpc have more
> than one return instruction.

Thanks, applied.
 
> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
> ---
>  tools/perf/ui/browsers/annotate.c | 20 +++++++++-----------
>  tools/perf/util/annotate.c        | 10 ++++++++++
>  tools/perf/util/annotate.h        |  1 +
>  3 files changed, 20 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
> index b65a979..288200f 100644
> --- a/tools/perf/ui/browsers/annotate.c
> +++ b/tools/perf/ui/browsers/annotate.c
> @@ -223,16 +223,14 @@ static void annotate_browser__write(struct ui_browser *browser, void *entry, int
>  			} else if (ins__is_call(dl->ins)) {
>  				ui_browser__write_graph(browser, SLSMG_RARROW_CHAR);
>  				SLsmg_write_char(' ');
> +			} else if (ins__is_ret(dl->ins)) {
> +				ui_browser__write_graph(browser, SLSMG_LARROW_CHAR);
> +				SLsmg_write_char(' ');
>  			} else {
>  				ui_browser__write_nstring(browser, " ", 2);
>  			}
>  		} else {
> -			if (strcmp(dl->name, "retq")) {
> -				ui_browser__write_nstring(browser, " ", 2);
> -			} else {
> -				ui_browser__write_graph(browser, SLSMG_LARROW_CHAR);
> -				SLsmg_write_char(' ');
> -			}
> +			ui_browser__write_nstring(browser, " ", 2);
>  		}
>  
>  		disasm_line__scnprintf(dl, bf, sizeof(bf), !annotate_browser__opts.use_offset);
> @@ -843,14 +841,14 @@ show_help:
>  				ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org");
>  			else if (browser->selection->offset == -1)
>  				ui_helpline__puts("Actions are only available for assembly lines.");
> -			else if (!browser->selection->ins) {
> -				if (strcmp(browser->selection->name, "retq"))
> -					goto show_sup_ins;
> +			else if (!browser->selection->ins)
> +				goto show_sup_ins;
> +			else if (ins__is_ret(browser->selection->ins))
>  				goto out;
> -			} else if (!(annotate_browser__jump(browser) ||
> +			else if (!(annotate_browser__jump(browser) ||
>  				     annotate_browser__callq(browser, evsel, hbt))) {
>  show_sup_ins:
> -				ui_helpline__puts("Actions are only available for 'callq', 'retq' & jump instructions.");
> +				ui_helpline__puts("Actions are only available for function call/return & jump/branch instructions.");
>  			}
>  			continue;
>  		case 't':
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index e0dc7b2..634daf5 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -363,6 +363,15 @@ static struct ins_ops nop_ops = {
>  	.scnprintf = nop__scnprintf,
>  };
>  
> +static struct ins_ops ret_ops = {
> +	.scnprintf = ins__raw_scnprintf,
> +};
> +
> +bool ins__is_ret(const struct ins *ins)
> +{
> +	return ins->ops == &ret_ops;
> +}
> +
>  static struct ins instructions_x86[] = {
>  	{ .name = "add",   .ops  = &mov_ops, },
>  	{ .name = "addl",  .ops  = &mov_ops, },
> @@ -439,6 +448,7 @@ static struct ins instructions_x86[] = {
>  	{ .name = "xadd",  .ops  = &mov_ops, },
>  	{ .name = "xbeginl", .ops  = &jump_ops, },
>  	{ .name = "xbeginq", .ops  = &jump_ops, },
> +	{ .name = "retq",  .ops  = &ret_ops, },
>  };
>  
>  static struct ins instructions_arm[] = {
> diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
> index f7b669e..488c427 100644
> --- a/tools/perf/util/annotate.h
> +++ b/tools/perf/util/annotate.h
> @@ -48,6 +48,7 @@ struct ins {
>  
>  bool ins__is_jump(const struct ins *ins);
>  bool ins__is_call(const struct ins *ins);
> +bool ins__is_ret(const struct ins *ins);
>  int ins__scnprintf(struct ins *ins, char *bf, size_t size, struct ins_operands *ops);
>  
>  struct annotation;
> -- 
> 2.5.5

  reply	other threads:[~2016-06-27 17:34 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-24 11:53 [RFC 0/6] perf annotate: Enable cross arch annotate Ravi Bangoria
2016-06-24 11:53 ` [RFC 1/6] perf: Remove unused hist_entry__annotate function Ravi Bangoria
2016-06-27 17:35   ` Arnaldo Carvalho de Melo
2016-06-29  9:40   ` [tip:perf/core] perf annotate: " tip-bot for Ravi Bangoria
2016-06-24 11:53 ` [RFC 2/6] perf annotate: Define macro for arch names Ravi Bangoria
2016-06-24 11:53 ` [RFC 3/6] perf annotate: Enable cross arch annotate Ravi Bangoria
2016-06-27 17:16   ` Arnaldo Carvalho de Melo
2016-06-28 11:47     ` Ravi Bangoria
2016-06-24 11:53 ` [RFC 4/6] perf annotate: generalize handling of ret instructions Ravi Bangoria
2016-06-27 17:34   ` Arnaldo Carvalho de Melo [this message]
2016-06-29  9:41   ` [tip:perf/core] perf annotate: Generalize handling of 'ret' instructions tip-bot for Naveen N. Rao
2016-06-24 11:53 ` [RFC 5/6] perf annotate: add powerpc support Ravi Bangoria
2016-06-24 11:54 ` [RFC 6/6] perf: add more triplets Ravi Bangoria
2016-06-27 17:34   ` Arnaldo Carvalho de Melo
2016-06-29  9:42   ` [tip:perf/core] perf tools: Add more toolchain triplets tip-bot for Ravi Bangoria

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=20160627173431.GA27027@kernel.org \
    --to=acme@kernel.org \
    --cc=ananth@in.ibm.com \
    --cc=anton@ozlabs.org \
    --cc=dja@axtens.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=naveen.n.rao@linux.vnet.ibm.com \
    --cc=ravi.bangoria@linux.vnet.ibm.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.