lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <20221003181657.4890-1-hcvcastro@gmail.com> Date: Mon, 3 Oct 2022 14:16:56 -0400 From: Henry Castro <hcvcastro@...il.com> To: namhyung@...nel.org Cc: Henry Castro <hcvcastro@...il.com>, Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>, Arnaldo Carvalho de Melo <acme@...nel.org>, Mark Rutland <mark.rutland@....com>, Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>, linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org Subject: [PATCH v2] perf: fix the probe finder location (.dwo files) If the file object is compiled using -gsplit-dwarf, the probe finder location will fail. Signed-off-by: Henry Castro <hcvcastro@...il.com> --- > Anyway I think it'd be safer to do > > if (dwarf_cu_info() == 0 && unit_type == skeleton) > pf->cu_die = subdie; Thank you, I have modifed the patch :) tools/perf/util/probe-finder.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c index 50d861a80f57..b27039f5f04b 100644 --- a/tools/perf/util/probe-finder.c +++ b/tools/perf/util/probe-finder.c @@ -1161,7 +1161,8 @@ static int debuginfo__find_probe_location(struct debuginfo *dbg, struct perf_probe_point *pp = &pf->pev->point; Dwarf_Off off, noff; size_t cuhl; - Dwarf_Die *diep; + Dwarf_Die *diep, cudie, subdie; + uint8_t unit_type; int ret = 0; off = 0; @@ -1200,6 +1201,14 @@ static int debuginfo__find_probe_location(struct debuginfo *dbg, continue; } +#if _ELFUTILS_VERSION >= 171 + /* Check separate debug information file. */ + if (dwarf_cu_info(pf->cu_die.cu, NULL, &unit_type, + &cudie, &subdie, NULL, NULL, NULL) == 0 + && unit_type == DW_UT_skeleton) + pf->cu_die = subdie; +#endif + /* Check if target file is included. */ if (pp->file) pf->fname = cu_find_realpath(&pf->cu_die, pp->file); -- 2.20.1
Powered by blists - more mailing lists