Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Changbin Du <changbin.du@huawei.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	"Liang, Kan" <kan.liang@linux.intel.com>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	llvm@lists.linux.dev, Hui Wang <hw.huiwang@huawei.com>
Subject: Re: [PATCH v6 7/8] perf: disasm: prefer debugging files in build-id cache
Date: Wed, 11 Sep 2024 11:05:04 +0300	[thread overview]
Message-ID: <3c2c5e34-2e26-4580-95dc-030504245872@intel.com> (raw)
In-Reply-To: <20240725021549.880167-8-changbin.du@huawei.com>

On 25/07/24 05:15, Changbin Du wrote:
> The build-id cache might have both debugging and non-debugging files. Here
> we prefer the debugging version for annotation.

As I pointed out before, disassembling a different file
from the one that actually executed can have pitfalls.

If you want this, it needs to be optional, not the default.

But if you take the approach to remove vdso from the buildid
cache, and add back the debug version, then this patch would
not be needed for vdso.

> 
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: Changbin Du <changbin.du@huawei.com>
> ---
>  tools/perf/util/disasm.c | 29 ++++++++++++++++++-----------
>  1 file changed, 18 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/perf/util/disasm.c b/tools/perf/util/disasm.c
> index 6af9fbec3a95..5f66b3632770 100644
> --- a/tools/perf/util/disasm.c
> +++ b/tools/perf/util/disasm.c
> @@ -1162,18 +1162,25 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
>  	    !dso__is_kcore(dso))
>  		return SYMBOL_ANNOTATE_ERRNO__NO_VMLINUX;
>  
> -	build_id_filename = dso__build_id_filename(dso, NULL, 0, false);
> -	if (build_id_filename) {
> -		__symbol__join_symfs(filename, filename_size, build_id_filename);
> -		free(build_id_filename);
> -	} else {
> -		if (dso__has_build_id(dso))
> -			return ENOMEM;
> -		return fallback_filename(dso, filename, filename_size);
> -	}
> +	/* Prefer debugging file if exists, otherwise non-debugging one is used. */
> +	for (int i = 0; i < 2; i++) {
> +		build_id_filename = dso__build_id_filename(dso, NULL, 0, !i);
> +		if (build_id_filename) {
> +			__symbol__join_symfs(filename, filename_size, build_id_filename);
> +			free(build_id_filename);
> +		} else {
> +			if (dso__has_build_id(dso))
> +				return ENOMEM;
> +			return fallback_filename(dso, filename, filename_size);
> +		}
>  
> -	if (access(filename, R_OK))
> -		return fallback_filename(dso, filename, filename_size);
> +		if (!access(filename, R_OK))
> +			break;
> +		else if (i != 0) {
> +			/* nor debugging or non-debugging is found */
> +			return fallback_filename(dso, filename, filename_size);
> +		}
> +	}
>  
>  	if (dso__is_kcore(dso) || dso__is_vdso(dso))
>  		goto fallback;


  reply	other threads:[~2024-09-11  8:05 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-25  2:15 [PATCH v6 0/8] perf: Support searching local debugging vdso or specify vdso path in cmdline Changbin Du
2024-07-25  2:15 ` [PATCH v6 1/8] perf: support " Changbin Du
2024-09-11  8:03   ` Adrian Hunter
2024-09-12 10:09     ` duchangbin
2024-07-25  2:15 ` [PATCH v6 2/8] perf: disasm: refactor function dso__disassemble_filename Changbin Du
2024-07-25  2:15 ` [PATCH v6 3/8] perf: disasm: use build_id_path if fallback failed Changbin Du
2024-07-25  2:15 ` [PATCH v6 4/8] perf: symbol: generalize vmlinux path searching Changbin Du
2024-09-11  8:03   ` Adrian Hunter
2024-07-25  2:15 ` [PATCH v6 5/8] perf: build-id: add support for build-id cache vdso debug Changbin Du
2024-09-11  8:04   ` Adrian Hunter
2024-07-25  2:15 ` [PATCH v6 6/8] perf: build-id: extend build_id_cache__find_debug() to find local debugging vdso Changbin Du
2024-09-11  8:04   ` Adrian Hunter
2024-07-25  2:15 ` [PATCH v6 7/8] perf: disasm: prefer debugging files in build-id cache Changbin Du
2024-09-11  8:05   ` Adrian Hunter [this message]
2024-07-25  2:15 ` [PATCH v6 8/8] perf buildid-cache: recognize vdso when adding files Changbin Du
2024-09-11  8:05   ` Adrian Hunter
2024-09-12 11:10     ` duchangbin
  -- strict thread matches above, loose matches on Subject: below --
2024-08-16 10:58 [RESEND PATCH v6 0/8] perf: Support searching local debugging vdso or specify vdso path in cmdline Changbin Du
2024-08-16 10:58 ` [PATCH v6 7/8] perf: disasm: prefer debugging files in build-id cache Changbin Du

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=3c2c5e34-2e26-4580-95dc-030504245872@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=changbin.du@huawei.com \
    --cc=hw.huiwang@huawei.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=justinstitt@google.com \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=morbo@google.com \
    --cc=namhyung@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=peterz@infradead.org \
    /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