Commit 63e6995005be for kernel

commit 63e6995005be8ceb8a1d56a18df1a1a40c28356d
Merge: b53440f8e5a1 6ec33db1aaf0
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Dec 1 20:18:59 2025 -0800

    Merge tag 'objtool-core-2025-12-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

    Pull objtool updates from Ingo Molnar:

     - klp-build livepatch module generation (Josh Poimboeuf)

       Introduce new objtool features and a klp-build script to generate
       livepatch modules using a source .patch as input.

       This builds on concepts from the longstanding out-of-tree kpatch
       project which began in 2012 and has been used for many years to
       generate livepatch modules for production kernels. However, this is a
       complete rewrite which incorporates hard-earned lessons from 12+
       years of maintaining kpatch.

       Key improvements compared to kpatch-build:

        - Integrated with objtool: Leverages objtool's existing control-flow
          graph analysis to help detect changed functions.

        - Works on vmlinux.o: Supports late-linked objects, making it
          compatible with LTO, IBT, and similar.

        - Simplified code base: ~3k fewer lines of code.

        - Upstream: No more out-of-tree #ifdef hacks, far less cruft.

        - Cleaner internals: Vastly simplified logic for
          symbol/section/reloc inclusion and special section extraction.

        - Robust __LINE__ macro handling: Avoids false positive binary diffs
          caused by the __LINE__ macro by introducing a fix-patch-lines
          script which injects #line directives into the source .patch to
          preserve the original line numbers at compile time.

     - Disassemble code with libopcodes instead of running objdump
       (Alexandre Chartre)

     - Disassemble support (-d option to objtool) by Alexandre Chartre,
       which supports the decoding of various Linux kernel code generation
       specials such as alternatives:

          17ef:  sched_balance_find_dst_group+0x62f                 mov    0x34(%r9),%edx
          17f3:  sched_balance_find_dst_group+0x633               | <alternative.17f3>             | X86_FEATURE_POPCNT
          17f3:  sched_balance_find_dst_group+0x633               | call   0x17f8 <__sw_hweight64> | popcnt %rdi,%rax
          17f8:  sched_balance_find_dst_group+0x638                 cmp    %eax,%edx

       ... jump table alternatives:

          1895:  sched_use_asym_prio+0x5                            test   $0x8,%ch
          1898:  sched_use_asym_prio+0x8                            je     0x18a9 <sched_use_asym_prio+0x19>
          189a:  sched_use_asym_prio+0xa                          | <jump_table.189a>                        | JUMP
          189a:  sched_use_asym_prio+0xa                          | jmp    0x18ae <sched_use_asym_prio+0x1e> | nop2
          189c:  sched_use_asym_prio+0xc                            mov    $0x1,%eax
          18a1:  sched_use_asym_prio+0x11                           and    $0x80,%ecx

       ... exception table alternatives:

        native_read_msr:
          5b80:  native_read_msr+0x0                                                     mov    %edi,%ecx
          5b82:  native_read_msr+0x2                                                   | <ex_table.5b82> | EXCEPTION
          5b82:  native_read_msr+0x2                                                   | rdmsr           | resume at 0x5b84 <native_read_msr+0x4>
          5b84:  native_read_msr+0x4                                                     shl    $0x20,%rdx

       .... x86 feature flag decoding (also see the X86_FEATURE_POPCNT
            example in sched_balance_find_dst_group() above):

          2faaf:  start_thread_common.constprop.0+0x1f                                    jne    0x2fba4 <start_thread_common.constprop.0+0x114>
          2fab5:  start_thread_common.constprop.0+0x25                                  | <alternative.2fab5>                  | X86_FEATURE_ALWAYS                                  | X86_BUG_NULL_SEG
          2fab5:  start_thread_common.constprop.0+0x25                                  | jmp    0x2faba <.altinstr_aux+0x2f4> | jmp    0x4b0 <start_thread_common.constprop.0+0x3f> | nop5
          2faba:  start_thread_common.constprop.0+0x2a                                    mov    $0x2b,%eax

       ... NOP sequence shortening:

          1048e2:  snapshot_write_finalize+0xc2                                            je     0x104917 <snapshot_write_finalize+0xf7>
          1048e4:  snapshot_write_finalize+0xc4                                            nop6
          1048ea:  snapshot_write_finalize+0xca                                            nop11
          1048f5:  snapshot_write_finalize+0xd5                                            nop11
          104900:  snapshot_write_finalize+0xe0                                            mov    %rax,%rcx
          104903:  snapshot_write_finalize+0xe3                                            mov    0x10(%rdx),%rax

       ... and much more.

     - Function validation tracing support (Alexandre Chartre)

     - Various -ffunction-sections fixes (Josh Poimboeuf)

     - Clang AutoFDO (Automated Feedback-Directed Optimizations) support
       (Josh Poimboeuf)

     - Misc fixes and cleanups (Borislav Petkov, Chen Ni, Dylan Hatch, Ingo
       Molnar, John Wang, Josh Poimboeuf, Pankaj Raghav, Peter Zijlstra,
       Thorsten Blum)

    * tag 'objtool-core-2025-12-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (129 commits)
      objtool: Fix segfault on unknown alternatives
      objtool: Build with disassembly can fail when including bdf.h
      objtool: Trim trailing NOPs in alternative
      objtool: Add wide output for disassembly
      objtool: Compact output for alternatives with one instruction
      objtool: Improve naming of group alternatives
      objtool: Add Function to get the name of a CPU feature
      objtool: Provide access to feature and flags of group alternatives
      objtool: Fix address references in alternatives
      objtool: Disassemble jump table alternatives
      objtool: Disassemble exception table alternatives
      objtool: Print addresses with alternative instructions
      objtool: Disassemble group alternatives
      objtool: Print headers for alternatives
      objtool: Preserve alternatives order
      objtool: Add the --disas=<function-pattern> action
      objtool: Do not validate IBT for .return_sites and .call_sites
      objtool: Improve tracing of alternative instructions
      objtool: Add functions to better name alternatives
      objtool: Identify the different types of alternatives
      ...