[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251031111302.43c44a032d350bc0fd3ac791@kernel.org>
Date: Fri, 31 Oct 2025 11:13:02 +0900
From: Masami Hiramatsu (Google) <mhiramat@...nel.org>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: Mark Rutland <mark.rutland@....com>, Mathieu Desnoyers
<mathieu.desnoyers@...icios.com>, linux-kernel@...r.kernel.org,
linux-trace-kernel@...r.kernel.org
Subject: Re: [PATCH v6 0/2] tracing: Add an option to show symbols in
_text+offset for function profiler
On Thu, 30 Oct 2025 05:25:48 -0400
Steven Rostedt <rostedt@...dmis.org> wrote:
> On Thu, 30 Oct 2025 12:30:05 +0900
> "Masami Hiramatsu (Google)" <mhiramat@...nel.org> wrote:
>
> > kernel/trace/blktrace.c | 6 +
> > kernel/trace/ftrace.c | 26 ++++++
> > kernel/trace/trace.c | 154 +++++++++++++++++-----------------
> > kernel/trace/trace.h | 40 +++++----
> > kernel/trace/trace_events.c | 4 -
> > kernel/trace/trace_events_synth.c | 2
> > kernel/trace/trace_fprobe.c | 6 +
> > kernel/trace/trace_functions_graph.c | 18 ++--
> > kernel/trace/trace_irqsoff.c | 30 +++----
> > kernel/trace/trace_kdb.c | 2
> > kernel/trace/trace_kprobe.c | 6 +
> > kernel/trace/trace_output.c | 18 ++--
> > kernel/trace/trace_sched_wakeup.c | 24 +++--
> > kernel/trace/trace_syscalls.c | 4 -
> > kernel/trace/trace_wprobe.c | 2
>
> I didn't realize this affected your branch too. Which means I can't apply
> this to any branch.
>
> Also, could you make a helper function...
>
> +++ b/kernel/trace/trace_wprobe.c
> @@ -260,7 +260,7 @@ print_wprobe_event(struct trace_iterator *iter, int flags,
>
> trace_seq_printf(s, "%s: (", trace_probe_name(tp));
>
> - if (!seq_print_ip_sym(s, field->ip, flags | TRACE_ITER_SYM_OFFSET))
> + if (!seq_print_ip_sym(s, field->ip, flags | TRACE_ITER(SYM_OFFSET)))
> goto out;
>
> trace_seq_putc(s, ')');
>
> that both fprobe and wprobe use? And then you don't need to have this open
> coded everywhere.
>
> That is, add this patch:
>
> diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h
> index 591adc9bb1e9..bd26004cc320 100644
> --- a/kernel/trace/trace_probe.h
> +++ b/kernel/trace/trace_probe.h
> @@ -598,3 +598,9 @@ struct uprobe_dispatch_data {
> struct trace_uprobe *tu;
> unsigned long bp_addr;
> };
> +
> +static inline int probe_print_ip_sym(struct trace_seq *s, unsigned long ip,
> + int flags)
> +{
> + retun seq_print_ip_sym(s, field->ip, flags | TRACE_ITER_SYM_OFFSET);
> +}
>
> And use that instead.
I would like to use more generic wrappers:
static inline int seq_print_ip_sym_offset(struct trace_seq *s, unsigned long ip,
unsigned long sym_flags)
{
return seq_print_ip_sym(s,ip, sym_flags | TRACE_ITER(SYM_OFFSET));
}
static inline int seq_print_ip_sym_no_offset(struct trace_seq *s, unsigned long ip,
unsigned long sym_flags)
{
return seq_print_ip_sym(s,ip, sym_flags & ~TRACE_ITER(SYM_OFFSET));
}
In trace_output.h, since this is also used in function_graph tracer.
Thank you,
--
Masami Hiramatsu (Google) <mhiramat@...nel.org>
Powered by blists - more mailing lists