* [PATCH] perf jit: Fix inaccurate DWARF line table
@ 2020-05-28 5:19 Nick Gasson
2020-05-28 7:44 ` Ian Rogers
0 siblings, 1 reply; 3+ messages in thread
From: Nick Gasson @ 2020-05-28 5:19 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa, Ian Rogers, Peter Zijlstra,
Stephane Eranian
Cc: Nick Gasson, linux-kernel
Fix an issue where addresses in the DWARF line table are offset by
-0x40 (GEN_ELF_TEXT_OFFSET). This can be seen with `objdump -S` on the
ELF files after perf inject.
Signed-off-by: Nick Gasson <nick.gasson@arm.com>
---
tools/perf/util/genelf_debug.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/genelf_debug.c b/tools/perf/util/genelf_debug.c
index 30e9f618f6cd..dd40683bd4c0 100644
--- a/tools/perf/util/genelf_debug.c
+++ b/tools/perf/util/genelf_debug.c
@@ -342,7 +342,7 @@ static void emit_lineno_info(struct buffer_ext *be,
*/
/* start state of the state machine we take care of */
- unsigned long last_vma = code_addr;
+ unsigned long last_vma = 0;
char const *cur_filename = NULL;
unsigned long cur_file_idx = 0;
int last_line = 1;
@@ -473,7 +473,7 @@ jit_process_debug_info(uint64_t code_addr,
ent = debug_entry_next(ent);
}
add_compilation_unit(di, buffer_ext_size(dl));
- add_debug_line(dl, debug, nr_debug_entries, 0);
+ add_debug_line(dl, debug, nr_debug_entries, GEN_ELF_TEXT_OFFSET);
add_debug_abbrev(da);
if (0) buffer_ext_dump(da, "abbrev");
--
2.26.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] perf jit: Fix inaccurate DWARF line table
2020-05-28 5:19 [PATCH] perf jit: Fix inaccurate DWARF line table Nick Gasson
@ 2020-05-28 7:44 ` Ian Rogers
2020-05-29 16:02 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 3+ messages in thread
From: Ian Rogers @ 2020-05-28 7:44 UTC (permalink / raw)
To: Nick Gasson
Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Peter Zijlstra,
Stephane Eranian, LKML
On Wed, May 27, 2020 at 10:19 PM Nick Gasson <nick.gasson@arm.com> wrote:
>
> Fix an issue where addresses in the DWARF line table are offset by
> -0x40 (GEN_ELF_TEXT_OFFSET). This can be seen with `objdump -S` on the
> ELF files after perf inject.
Without too much knowledge this looks good to me. The original code
came from oprofile's jit support:
https://sourceforge.net/p/oprofile/oprofile/ci/master/tree/opjitconv/debug_line.c#l325
Acked-by: Ian Rogers <irogers@google.com>
> Signed-off-by: Nick Gasson <nick.gasson@arm.com>
> ---
> tools/perf/util/genelf_debug.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/genelf_debug.c b/tools/perf/util/genelf_debug.c
> index 30e9f618f6cd..dd40683bd4c0 100644
> --- a/tools/perf/util/genelf_debug.c
> +++ b/tools/perf/util/genelf_debug.c
> @@ -342,7 +342,7 @@ static void emit_lineno_info(struct buffer_ext *be,
> */
>
> /* start state of the state machine we take care of */
> - unsigned long last_vma = code_addr;
> + unsigned long last_vma = 0;
> char const *cur_filename = NULL;
> unsigned long cur_file_idx = 0;
> int last_line = 1;
> @@ -473,7 +473,7 @@ jit_process_debug_info(uint64_t code_addr,
> ent = debug_entry_next(ent);
> }
> add_compilation_unit(di, buffer_ext_size(dl));
> - add_debug_line(dl, debug, nr_debug_entries, 0);
> + add_debug_line(dl, debug, nr_debug_entries, GEN_ELF_TEXT_OFFSET);
> add_debug_abbrev(da);
> if (0) buffer_ext_dump(da, "abbrev");
>
> --
> 2.26.2
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] perf jit: Fix inaccurate DWARF line table
2020-05-28 7:44 ` Ian Rogers
@ 2020-05-29 16:02 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-05-29 16:02 UTC (permalink / raw)
To: Ian Rogers; +Cc: Nick Gasson, Jiri Olsa, Peter Zijlstra, Stephane Eranian, LKML
Em Thu, May 28, 2020 at 12:44:56AM -0700, Ian Rogers escreveu:
> On Wed, May 27, 2020 at 10:19 PM Nick Gasson <nick.gasson@arm.com> wrote:
> >
> > Fix an issue where addresses in the DWARF line table are offset by
> > -0x40 (GEN_ELF_TEXT_OFFSET). This can be seen with `objdump -S` on the
> > ELF files after perf inject.
>
> Without too much knowledge this looks good to me. The original code
> came from oprofile's jit support:
> https://sourceforge.net/p/oprofile/oprofile/ci/master/tree/opjitconv/debug_line.c#l325
>
> Acked-by: Ian Rogers <irogers@google.com>
Thanks, applied and added your comment,
- Arnaldo
> > Signed-off-by: Nick Gasson <nick.gasson@arm.com>
> > ---
> > tools/perf/util/genelf_debug.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/perf/util/genelf_debug.c b/tools/perf/util/genelf_debug.c
> > index 30e9f618f6cd..dd40683bd4c0 100644
> > --- a/tools/perf/util/genelf_debug.c
> > +++ b/tools/perf/util/genelf_debug.c
> > @@ -342,7 +342,7 @@ static void emit_lineno_info(struct buffer_ext *be,
> > */
> >
> > /* start state of the state machine we take care of */
> > - unsigned long last_vma = code_addr;
> > + unsigned long last_vma = 0;
> > char const *cur_filename = NULL;
> > unsigned long cur_file_idx = 0;
> > int last_line = 1;
> > @@ -473,7 +473,7 @@ jit_process_debug_info(uint64_t code_addr,
> > ent = debug_entry_next(ent);
> > }
> > add_compilation_unit(di, buffer_ext_size(dl));
> > - add_debug_line(dl, debug, nr_debug_entries, 0);
> > + add_debug_line(dl, debug, nr_debug_entries, GEN_ELF_TEXT_OFFSET);
> > add_debug_abbrev(da);
> > if (0) buffer_ext_dump(da, "abbrev");
> >
> > --
> > 2.26.2
> >
--
- Arnaldo
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-05-29 16:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-28 5:19 [PATCH] perf jit: Fix inaccurate DWARF line table Nick Gasson
2020-05-28 7:44 ` Ian Rogers
2020-05-29 16:02 ` Arnaldo Carvalho de Melo
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.