[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6F6AC75C-89F9-45C3-98FF-07AD73C38078@fb.com>
Date: Tue, 6 Aug 2024 20:12:55 +0000
From: Song Liu <songliubraving@...a.com>
To: Steven Rostedt <rostedt@...dmis.org>
CC: Song Liu <songliubraving@...a.com>, Song Liu <song@...nel.org>,
"live-patching@...r.kernel.org" <live-patching@...r.kernel.org>,
LKML
<linux-kernel@...r.kernel.org>,
"linux-trace-kernel@...r.kernel.org"
<linux-trace-kernel@...r.kernel.org>,
Josh Poimboeuf <jpoimboe@...nel.org>, Jiri Kosina <jikos@...nel.org>,
Miroslav Benes <mbenes@...e.cz>, Petr Mladek
<pmladek@...e.com>,
Joe Lawrence <joe.lawrence@...hat.com>,
Nathan Chancellor
<nathan@...nel.org>,
"morbo@...gle.com" <morbo@...gle.com>,
Justin Stitt
<justinstitt@...gle.com>,
Luis Chamberlain <mcgrof@...nel.org>,
Leizhen
<thunder.leizhen@...wei.com>,
"kees@...nel.org" <kees@...nel.org>,
Kernel
Team <kernel-team@...a.com>,
Matthew Maurer <mmaurer@...gle.com>,
Sami
Tolvanen <samitolvanen@...gle.com>,
Masami Hiramatsu <mhiramat@...nel.org>
Subject: Re: [PATCH v2 3/3] tracing/kprobes: Use APIs that matches symbols
without .XXX suffix
> On Aug 6, 2024, at 1:01 PM, Steven Rostedt <rostedt@...dmis.org> wrote:
>
> On Tue, 6 Aug 2024 16:00:49 -0400
> Steven Rostedt <rostedt@...dmis.org> wrote:
>
>>>>> + if (IS_ENABLED(CONFIG_LTO_CLANG) && !addr)
>>>>> + addr = kallsyms_lookup_name_without_suffix(trace_kprobe_symbol(tk));
>>>>> +
>>>>
>>>> So you do the lookup twice if this is enabled?
>>>>
>>>> Why not just use "kallsyms_lookup_name_without_suffix()" the entire time,
>>>> and it should work just the same as "kallsyms_lookup_name()" if it's not
>>>> needed?
>>>
>>> We still want to give priority to full match. For example, we have:
>>>
>>> [root@~]# grep c_next /proc/kallsyms
>>> ffffffff81419dc0 t c_next.llvm.7567888411731313343
>>> ffffffff81680600 t c_next
>>> ffffffff81854380 t c_next.llvm.14337844803752139461
>>>
>>> If the goal is to explicitly trace c_next.llvm.7567888411731313343, the
>>> user can provide the full name. If we always match _without_suffix, all
>>> of the 3 will match to the first one.
>>>
>>> Does this make sense?
>>
>> Yes. Sorry, I missed the "&& !addr)" after the "IS_ENABLED()", which looked
>> like you did the command twice.
>
> But that said, does this only have to be for llvm? Or should we do this for
> even gcc? As I believe gcc can give strange symbols too.
I think most of the issue comes with LTO, as LTO promotes local static
functions to global functions. IIUC, we don't have GCC built, LTO enabled
kernel yet.
In my GCC built, we have suffixes like ".constprop.0", ".part.0", ".isra.0",
and ".isra.0.cold". We didn't do anything about these before this set. So I
think we are OK not handling them now. We sure can enable it for GCC built
kernel in the future.
Thanks,
Song
Powered by blists - more mailing lists