On Thu, Apr 23, 2026 at 02:33:00PM -0700, Song Liu wrote: > On Thu, Apr 23, 2026 at 12:31 PM Josh Poimboeuf <[email protected]> wrote: > > > > On Thu, Apr 23, 2026 at 12:05:03PM -0700, Song Liu wrote: > > > On Wed, Apr 22, 2026 at 9:04 PM Josh Poimboeuf <[email protected]> > > > wrote: > > > > > > > > With Clang LTO enabled, DECLARE_PCI_FIXUP_SECTION() uses __UNIQUE_ID() > > > > to generate uniquely named wrapper functions, which are being reported > > > > as new functions and unnecessarily included in the patch module: > > > > > > > > vmlinux.o: new function: __UNIQUE_ID_quirk_f0_vpd_link_661 > > > > > > > > These stub functions only exist to make the compiler happy. Just ignore > > > > them along with any other dont_correlate() symbols. Note that > > > > dont_correlate() already includes prefix functions. > > > > > > > > Signed-off-by: Josh Poimboeuf <[email protected]> > > > > > > The actual change appears to be much bigger than the subject line. > > > Maybe rephrase it a bit? > > > > Hm, in fact this is a relic from a previous iteration of the patches: it > > longer fixes what it claims to fix, as __UNIQUE_ID_ (other than > > __ADDRESSABLE()) are now correlated. The claimed issue actually gets > > fixed later by the rewriting of the correlation algorithm. > > > > That said, I still think the below is needed, I just need to rewrite the > > commit log. > > Agreed.
From: Josh Poimboeuf <[email protected]> Subject: [PATCH] objtool/klp: Don't report uncorrelated functions as new Clang LTO uses __UNIQUE_ID() to generate some uniquely named wrapper functions, like initstubs. If they're uncorrelated, prevent them from being reported as new functions and included unnecessarily. Note that dont_correlate() already includes prefix functions, so prefix functions are still being ignored here. Signed-off-by: Josh Poimboeuf <[email protected]> --- tools/objtool/klp-diff.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/objtool/klp-diff.c b/tools/objtool/klp-diff.c index 36753eeba58c..ea9ccf8c4ea9 100644 --- a/tools/objtool/klp-diff.c +++ b/tools/objtool/klp-diff.c @@ -786,7 +786,7 @@ static int mark_changed_functions(struct elfs *e) /* Find changed functions */ for_each_sym(e->orig, sym_orig) { - if (!is_func_sym(sym_orig) || is_prefix_func(sym_orig)) + if (!is_func_sym(sym_orig) || dont_correlate(sym_orig)) continue; patched_sym = sym_orig->twin; @@ -802,7 +802,7 @@ static int mark_changed_functions(struct elfs *e) /* Find added functions and print them */ for_each_sym(e->patched, patched_sym) { - if (!is_func_sym(patched_sym) || is_prefix_func(patched_sym)) + if (!is_func_sym(patched_sym) || dont_correlate(patched_sym)) continue; if (!patched_sym->twin) { -- 2.53.0

