On Wed, Aug 05, 2026 at 01:51:44PM -0700, Song Liu wrote:
> On Wed, Aug 5, 2026 at 7:30 AM Josh Poimboeuf <[email protected]> wrote:
> >
> > An x86 alternative with an empty replacement, e.g. the second entry of
> >
> >   ALTERNATIVE_2("orig", "repl", ft1, "", ft2)
> >
> > has a replacementlen of zero.  Its replacement offset still gets a
> > relocation, but the label it points at is the end of the previous
> > replacement, which is also the beginning of the *next* alternative's
> > replacement.  The value is meaningless; get_alt_entry() already ignores
> > it for that reason.
> >
> > klp diff doesn't ignore it.  When such an alternative belongs to a
> > changed function, cloning its relocations drags in the unrelated
> > neighboring replacement, along with everything that replacement
> > references.  On an x86 clang/lto build an empty alternative in
> > meminfo_proc_show() pulled in the replacement of an alternative in
> > proc_kcore_init(), silently emitting a klp relocation against init text
> > which has long since been freed by the time the patch is applied.
> >
> > Add arch_alt_ignore_new_reloc() and skip such relocations when cloning.
> > This has to be arch specific: on arm64 a zero-length replacement instead
> > identifies an alternative callback, whose replacement offset points at
> > the callback function and must be preserved.
> >
> > Fixes: dd590d4d57eb ("objtool/klp: Introduce klp diff subcommand for 
> > diffing object files")
> > Signed-off-by: Josh Poimboeuf <[email protected]>
> 
> The patch looks good to me.
> 
> Acked-by: Song Liu <[email protected]>
> 
> Maybe we should add a __weak version of arch_alt_ignore_new_reloc(),
> but that can wait until we add arm64 support.
> 
> However, this reminds me the cross compile use case. With current
> arch_* functions, we cannot run klp-build on x86_64 build server for
> an arm64 kernel (right?). What's our plan with the cross-compile use
> cases?

I suspect it will be easy, objtool already works fine being
cross-compiled today.  Feel free to try it ;-)

-- 
Josh

Reply via email to