All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: He Kuang <hekuang@huawei.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Jiri Olsa <jolsa@kernel.org>
Cc: peterz@infradead.org, mingo@redhat.com,
	alexander.shishkin@linux.intel.com, jolsa@redhat.com,
	wangnan0@huawei.com, jpoimboe@redhat.com, ak@linux.intel.com,
	eranian@google.com, namhyung@kernel.org,
	sukadev@linux.vnet.ibm.com, masami.hiramatsu.pt@hitachi.com,
	tumanova@linux.vnet.ibm.com, kan.liang@intel.com,
	penberg@kernel.org, dsahern@gmail.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/7 UPDATE2] perf tools: Find vdso with the consider of cross-platform
Date: Wed, 15 Jun 2016 10:34:06 -0300	[thread overview]
Message-ID: <20160615133406.GG3978@kernel.org> (raw)
In-Reply-To: <1463475894-163531-1-git-send-email-hekuang@huawei.com>

Em Tue, May 17, 2016 at 09:04:54AM +0000, He Kuang escreveu:
> There's a problem in machine__findnew_vdso(), vdso buildid generated
> by a 32-bit machine stores it with the name 'vdso', but when
> processing buildid on a 64-bit machine with the same 'perf.data', perf
> will search for vdso named as 'vdso32' and get failed.

Without looking at the code, just trying to understand your patch by
reading your description: Why would we look for names if we have
build-ids? All this type and name comparasions seems wrong if we have a
build-id, no?

Adrian?

- Arnaldo
 
> This patch tries to find the exsiting dsos in machine->dsos by thread
> dso_type. 64-bit thread tries to find vdso with name 'vdso', because
> all 64-bit vdso is named as that. 32-bit thread first tries to find
> vdso with name 'vdso32' if this thread was run on 64-bit machine, if
> failed, then it tries 'vdso' which indicates that the thread was run
> on 32-bit machine when recording.
> 
> Signed-off-by: He Kuang <hekuang@huawei.com>
> ---
>  tools/perf/util/vdso.c | 40 +++++++++++++++++++++++++++++++++++++---
>  1 file changed, 37 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/perf/util/vdso.c b/tools/perf/util/vdso.c
> index 44d440d..8f81c41 100644
> --- a/tools/perf/util/vdso.c
> +++ b/tools/perf/util/vdso.c
> @@ -134,8 +134,6 @@ static struct dso *__machine__addnew_vdso(struct machine *machine, const char *s
>  	return dso;
>  }
>  
> -#if BITS_PER_LONG == 64
> -
>  static enum dso_type machine__thread_dso_type(struct machine *machine,
>  					      struct thread *thread)
>  {
> @@ -156,6 +154,8 @@ static enum dso_type machine__thread_dso_type(struct machine *machine,
>  	return dso_type;
>  }
>  
> +#if BITS_PER_LONG == 64
> +
>  static int vdso__do_copy_compat(FILE *f, int fd)
>  {
>  	char buf[4096];
> @@ -283,8 +283,38 @@ static int __machine__findnew_vdso_compat(struct machine *machine,
>  
>  #endif
>  
> +static struct dso *machine__find_vdso(struct machine *machine,
> +				      struct thread *thread)
> +{
> +	struct dso *dso = NULL;
> +	enum dso_type dso_type;
> +
> +	dso_type = machine__thread_dso_type(machine, thread);
> +	switch (dso_type) {
> +	case DSO__TYPE_32BIT:
> +		dso = __dsos__find(&machine->dsos, DSO__NAME_VDSO32, true);
> +		if (!dso) {
> +			dso = __dsos__find(&machine->dsos, DSO__NAME_VDSO,
> +					   true);
> +			if (dso_type != dso__type(dso, machine))
> +				dso = NULL;
> +		}
> +		break;
> +	case DSO__TYPE_X32BIT:
> +		dso = __dsos__find(&machine->dsos, DSO__NAME_VDSOX32, true);
> +		break;
> +	case DSO__TYPE_64BIT:
> +	case DSO__TYPE_UNKNOWN:
> +	default:
> +		dso = __dsos__find(&machine->dsos, DSO__NAME_VDSO, true);
> +		break;
> +	}
> +
> +	return dso;
> +}
> +
>  struct dso *machine__findnew_vdso(struct machine *machine,
> -				  struct thread *thread __maybe_unused)
> +				  struct thread *thread)
>  {
>  	struct vdso_info *vdso_info;
>  	struct dso *dso = NULL;
> @@ -297,6 +327,10 @@ struct dso *machine__findnew_vdso(struct machine *machine,
>  	if (!vdso_info)
>  		goto out_unlock;
>  
> +	dso = machine__find_vdso(machine, thread);
> +	if (dso)
> +		goto out_unlock;
> +
>  #if BITS_PER_LONG == 64
>  	if (__machine__findnew_vdso_compat(machine, thread, vdso_info, &dso))
>  		goto out_unlock;
> -- 
> 1.8.5.2

  parent reply	other threads:[~2016-06-15 13:34 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-12  8:43 [PATCH v3 0/7] Add support for remote unwind He Kuang
2016-05-12  8:43 ` [PATCH v3 1/7] perf tools: Set vdso name to vdso[64,32] depending on platform He Kuang
2016-05-12 10:06   ` Adrian Hunter
2016-05-13  8:51     ` [PATCH v3 1/7 UPDATE] perf tools: Find vdso with the consider of cross-platform He Kuang
2016-05-16 13:32       ` Arnaldo Carvalho de Melo
2016-05-17  7:34         ` Adrian Hunter
2016-05-17  7:33       ` Adrian Hunter
2016-05-17  9:04         ` [PATCH v3 1/7 UPDATE2] " He Kuang
2016-05-17  9:17           ` Adrian Hunter
2016-05-17 12:46             ` Arnaldo Carvalho de Melo
2016-06-15 13:34           ` Arnaldo Carvalho de Melo [this message]
2016-06-16  0:22             ` Hekuang
2016-06-16 13:00             ` Adrian Hunter
2016-06-16 16:33               ` Arnaldo Carvalho de Melo
2016-05-17  9:05         ` [PATCH v3 1/7 UPDATE] " Hekuang
2016-05-13  8:53     ` [PATCH v3 1/7] perf tools: Set vdso name to vdso[64,32] depending on platform Hekuang
2016-05-12  8:43 ` [PATCH v3 2/7] perf tools: Store vdso buildid unconditionally He Kuang
2016-05-12 13:09   ` Arnaldo Carvalho de Melo
2016-05-20  6:43   ` [tip:perf/urgent] perf symbols: " tip-bot for He Kuang
2016-05-12  8:43 ` [PATCH v3 3/7] perf tools: Remove the logical that skip buildid cache if symfs is given He Kuang
2016-05-12 13:09   ` Arnaldo Carvalho de Melo
2016-05-12 20:23     ` David Ahern
2016-05-12 20:33       ` Arnaldo Carvalho de Melo
2016-05-13  7:19       ` Hekuang
2016-05-13 14:27         ` David Ahern
2016-05-13 18:01           ` Arnaldo Carvalho de Melo
2016-05-14  8:19             ` [PATCH v3 3/7 UPDATE] perf tools: Add option for the path of buildid dsos under symfs He Kuang
2016-05-14 14:43               ` David Ahern
2016-05-16  1:30                 ` Hekuang
2016-05-16  2:50                   ` David Ahern
2016-05-16  6:40                     ` Hekuang
2016-05-18  1:47                     ` Hekuang
2016-05-18  1:51                       ` David Ahern
2016-05-18  2:48                         ` Hekuang
2016-05-18  3:04                           ` David Ahern
2016-05-12  8:43 ` [PATCH v3 4/7] perf tools: Promote proper messages for cross-platform unwind He Kuang
2016-05-12  8:43 ` [PATCH v3 5/7] perf callchain: Add support " He Kuang
2016-05-12  8:43 ` [PATCH v3 6/7] perf callchain: Support x86 target platform He Kuang
2016-05-12  8:43 ` [PATCH v3 7/7] perf callchain: Support aarch64 cross-platform He Kuang
2016-06-22  6:57 [PATCH 0/5] Fixes on perf unwind He Kuang
2016-06-22  6:57 ` [PATCH 1/5] perf unwind: Change macro names of perf register He Kuang
2016-06-26 10:56   ` [tip:perf/core] " tip-bot for He Kuang
2016-06-22  6:57 ` [PATCH 2/5] perf unwind: Fix wrongly used regs for x86_32 unwind He Kuang
2016-06-26 10:56   ` [tip:perf/core] " tip-bot for He Kuang
2016-06-22  6:57 ` [PATCH 3/5] perf unwind: Fix wrongly used regs for aarch64 unwind He Kuang
2016-06-26 10:57   ` [tip:perf/core] " tip-bot for He Kuang
2016-06-22  6:57 ` [PATCH 4/5] perf tools: Let python use correct gcc for build_ext He Kuang
2016-06-26 10:54   ` [tip:perf/core] " tip-bot for He Kuang
2016-06-22  6:57 ` [PATCH 5/5] perf tools: Fix NULL pointer deference when vdso not found He Kuang
2016-06-23  2:02   ` Wangnan (F)
2016-06-23  3:03     ` Hekuang
2016-06-23 12:07     ` Arnaldo Carvalho de Melo
2016-06-23 13:28       ` Arnaldo Carvalho de Melo
2016-06-26 10:55   ` [tip:perf/core] perf tools: Find right DSO taking into account if binary is 32 or 64-bit tip-bot for He Kuang
2016-06-23 13:30 ` [PATCH 0/5] Fixes on perf unwind 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=20160615133406.GG3978@kernel.org \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=hekuang@huawei.com \
    --cc=jolsa@kernel.org \
    --cc=jolsa@redhat.com \
    --cc=jpoimboe@redhat.com \
    --cc=kan.liang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=penberg@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sukadev@linux.vnet.ibm.com \
    --cc=tumanova@linux.vnet.ibm.com \
    --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 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.