2014-04-07 07:05:58

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH] perf probe: Use dwarf_getcfi_elf() instead of dwarf_getcfi()

The dwarf_getcfi() only checks .debug_frame section for CFI, but as
most binaries only have .eh_frame it'd return NULL and it makes
some variables inaccessible.

Using dwarf_getcfi_elf (along with dwarf_getelf()) allows to show and
add probe to more variables.

Cc: Masami Hiramatsu <[email protected]>
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/util/probe-finder.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 3bf0c8cdccb7..d58da0672736 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -985,7 +985,7 @@ static int debuginfo__find_probes(struct debuginfo *dbg,

#if _ELFUTILS_PREREQ(0, 142)
/* Get the call frame information from this dwarf */
- pf->cfi = dwarf_getcfi(dbg->dbg);
+ pf->cfi = dwarf_getcfi_elf(dwarf_getelf(dbg->dbg));
#endif

off = 0;
--
1.7.11.7


Subject: Re: [PATCH] perf probe: Use dwarf_getcfi_elf() instead of dwarf_getcfi()

(2014/04/07 16:05), Namhyung Kim wrote:
> The dwarf_getcfi() only checks .debug_frame section for CFI, but as
> most binaries only have .eh_frame it'd return NULL and it makes
> some variables inaccessible.
>
> Using dwarf_getcfi_elf (along with dwarf_getelf()) allows to show and
> add probe to more variables.
>
> Cc: Masami Hiramatsu <[email protected]>
> Signed-off-by: Namhyung Kim <[email protected]>

Thank you for fixing :)

Acked-by: Masami Hiramatsu <[email protected]>

> ---
> tools/perf/util/probe-finder.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
> index 3bf0c8cdccb7..d58da0672736 100644
> --- a/tools/perf/util/probe-finder.c
> +++ b/tools/perf/util/probe-finder.c
> @@ -985,7 +985,7 @@ static int debuginfo__find_probes(struct debuginfo *dbg,
>
> #if _ELFUTILS_PREREQ(0, 142)
> /* Get the call frame information from this dwarf */
> - pf->cfi = dwarf_getcfi(dbg->dbg);
> + pf->cfi = dwarf_getcfi_elf(dwarf_getelf(dbg->dbg));
> #endif
>
> off = 0;
>


--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: [email protected]

Subject: [tip:perf/urgent] perf probe: Use dwarf_getcfi_elf() instead of dwarf_getcfi()

Commit-ID: 03d89412981a7681971bc77edba1669595763030
Gitweb: http://git.kernel.org/tip/03d89412981a7681971bc77edba1669595763030
Author: Namhyung Kim <[email protected]>
AuthorDate: Mon, 7 Apr 2014 16:05:48 +0900
Committer: Jiri Olsa <[email protected]>
CommitDate: Mon, 14 Apr 2014 12:55:40 +0200

perf probe: Use dwarf_getcfi_elf() instead of dwarf_getcfi()

The dwarf_getcfi() only checks .debug_frame section for CFI, but as
most binaries only have .eh_frame it'd return NULL and it makes
some variables inaccessible.

Using dwarf_getcfi_elf (along with dwarf_getelf()) allows to show and
add probe to more variables.

Signed-off-by: Namhyung Kim <[email protected]>
Acked-by: Masami Hiramatsu <[email protected]>
Cc: Masami Hiramatsu <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Jiri Olsa <[email protected]>
---
tools/perf/util/probe-finder.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index fae274e..5627621 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -985,7 +985,7 @@ static int debuginfo__find_probes(struct debuginfo *dbg,

#if _ELFUTILS_PREREQ(0, 142)
/* Get the call frame information from this dwarf */
- pf->cfi = dwarf_getcfi(dbg->dbg);
+ pf->cfi = dwarf_getcfi_elf(dwarf_getelf(dbg->dbg));
#endif

off = 0;