On Thu, 30 Oct 2025 05:25:48 -0400
Steven Rostedt <[email protected]> wrote:

> On Thu, 30 Oct 2025 12:30:05 +0900
> "Masami Hiramatsu (Google)" <[email protected]> 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) <[email protected]>

Reply via email to