public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/53] objtool/klp: Some klp-build fixes and improvements
@ 2026-05-01  4:07 Josh Poimboeuf
  2026-05-01  4:07 ` [PATCH v2 01/53] objtool/klp: Fix is_uncorrelated_static_local() for Clang Josh Poimboeuf
                   ` (53 more replies)
  0 siblings, 54 replies; 77+ messages in thread
From: Josh Poimboeuf @ 2026-05-01  4:07 UTC (permalink / raw)
  To: x86
  Cc: linux-kernel, live-patching, Peter Zijlstra, Joe Lawrence,
	Song Liu, Miroslav Benes, Petr Mladek

Changes since v1 (https://lore.kernel.org/cover.1776916871.git.jpoimboe@kernel.org):

- Add comment for find_reloc_by_dest_range() first-match behavior
  [Peter]
- Simplify is_cold_func() [Peter]
- Grow __cfi_ symbols [Peter]
- Rename "Ignore __UNIQUE_ID_*() PCI stub functions" to more general
  "Don't report uncorrelated functions as new" [Song]
- Move rodata non-correlation into pointer-comparison fix [Miroslav]
- Add comments for convert_reloc_sym() return values [Song]
- Remove redundant SRC/OBJ variables [Song]
- Use "if (mismatch) {} else" in for_each_sym_by_*() [Song]
- Flatten nested if-else chain in short-circuit validation [Song]
- Add comments with examples to symbol correlation algorithm [Song]
- Move callback refactor to earlier in the patch set [Miroslav]
- Fix reloc corruption in convert_reloc_sym_to_secsym() [Sashiko]
- Include offset in object checksum hashing [Sashiko]
- Fix klp-build checksum comparison output for added/removed
  instructions [Sashiko]
- Fix kCFI prefix finding/cloning
- Add reloc symbol conversion simplification cleanup
- Improve local label check for uncorrelated symbols
- Drop "Make function prefix handling more generic" for now (refactored
  version will come with arm64 patches)
- Refactor inline alternative cloning into separate
  clone_inline_alternatives()
- Add Acked-by/Reviewed-by tags

---

While working on the (upcoming) arm64 support, I ended up shaking out a
lot of bugs by tested several patches on a variety of configs (distro,
LTO, FineIBT, kCFI, etc).

While arm64 support seems to be working well, I decided to leave those
patches out of this set to try to keep the number of patches
"reasonable".

And these stand alone as nice improvements for x86 anyway.

Full arm64 support (this set + more) can be found here:

  git://git.kernel.org/pub/scm/linux/kernel/git/jpoimboe/linux.git klp-build-arm64

Joe Lawrence (2):
  objtool/klp: Fix is_uncorrelated_static_local() for Clang
  objtool/klp: Fix create_fake_symbols() skipping entsize-based sections

Josh Poimboeuf (51):
  objtool/klp: Fix .data..once static local non-correlation
  objtool/klp: Don't correlate __ADDRESSABLE() symbols
  objtool/klp: Don't correlate absolute symbols
  objtool/klp: Don't correlate __initstub__ symbols
  objtool/klp: Don't report uncorrelated functions as new
  objtool/klp: Improve local label check
  objtool: Replace iterator callback with for_each_sym_by_mangled_name()
  objtool/klp: Fix --debug-checksum for duplicate symbol names
  objtool/klp: Fix handling of zero-length .altinstr_replacement
    sections
  objtool/klp: Fix cloning of zero-length section symbols
  objtool/klp: Fix XXH3 state memory leak
  objtool/klp: Fix extraction of text annotations for alternatives
  objtool/klp: Fix kCFI trap handling
  objtool/klp: Fix relocation conversion failures for R_X86_64_NONE
  objtool: Move mark_rodata() to elf.c
  objtool/klp: Simplify reloc symbol conversion
  objtool/klp: Fix pointer comparisons for rodata objects
  objtool/klp: Don't correlate .rodata.cst* constant pool objects
  objtool/klp: Fix reloc corruption in convert_reloc_sym_to_secsym()
  objtool: Fix reloc hash collision in find_reloc_by_dest_range()
  klp-build: Fix hang on out-of-date .config
  klp-build: Fix checksum comparison for changed offsets
  klp-build: Don't use errexit
  klp-build: Validate patch file existence
  klp-build: Suppress excessive fuzz output by default
  klp-build: Fix patch cleanup on interrupt
  klp-build: Reject patches to vDSO
  klp-build: Reject patches to realmode
  klp-build: Print "objtool klp diff" command in verbose mode
  klp-build: Remove redundant SRC and OBJ variables
  objtool/klp: Don't set sym->file for section symbols
  objtool: Include libsubcmd headers directly from source tree
  objtool/klp: Create empty checksum sections for function-less object
    files
  objtool/klp: Handle Clang .data..Lanon anonymous data sections
  objtool: Add is_alias_sym() helper
  objtool: Add is_cold_func() helper
  objtool/klp: Extricate checksum calculation from validate_branch()
  objtool: Consolidate file decoding into decode_file()
  objtool/klp: Add "objtool klp checksum" subcommand
  klp-build: Use "objtool klp checksum" subcommand
  objtool/klp: Remove "objtool --checksum"
  klp-build: Validate short-circuit prerequisites
  objtool/klp: Calculate object checksums
  objtool/klp: Rewrite symbol correlation algorithm
  objtool/klp: Add correlation debugging output
  objtool: Add insn_sym() helper
  objtool/klp: Fix position-dependent checksums for non-relocated
    jumps/calls
  objtool: Grow __cfi_* prefix symbols for all CFI+CALL_PADDING
  objtool/klp: Fix kCFI prefix finding/cloning
  objtool: Improve and simplify prefix symbol detection
  objtool/klp: Cache dont_correlate() result

 arch/x86/Kconfig                         |   4 -
 lib/Kconfig.debug                        |   2 +-
 scripts/Makefile.lib                     |   7 +-
 scripts/livepatch/klp-build              | 250 ++++---
 tools/objtool/Build                      |   2 +-
 tools/objtool/Makefile                   |   4 +-
 tools/objtool/arch/x86/decode.c          |  17 +-
 tools/objtool/builtin-check.c            |  26 +-
 tools/objtool/builtin-klp.c              |   1 +
 tools/objtool/check.c                    | 412 ++++-------
 tools/objtool/disas.c                    |  22 +-
 tools/objtool/elf.c                      | 124 ++--
 tools/objtool/include/objtool/arch.h     |   3 +
 tools/objtool/include/objtool/builtin.h  |   7 +-
 tools/objtool/include/objtool/check.h    |  34 +-
 tools/objtool/include/objtool/checksum.h |  53 +-
 tools/objtool/include/objtool/elf.h      |  59 +-
 tools/objtool/include/objtool/klp.h      |   1 +
 tools/objtool/include/objtool/warn.h     |  57 +-
 tools/objtool/klp-checksum.c             | 347 ++++++++++
 tools/objtool/klp-diff.c                 | 826 ++++++++++++++++-------
 tools/objtool/objtool.c                  |   3 -
 tools/objtool/trace.c                    |   8 +-
 23 files changed, 1493 insertions(+), 776 deletions(-)
 create mode 100644 tools/objtool/klp-checksum.c

-- 
2.53.0


^ permalink raw reply	[flat|nested] 77+ messages in thread

end of thread, other threads:[~2026-05-04 14:05 UTC | newest]

Thread overview: 77+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-01  4:07 [PATCH v2 00/53] objtool/klp: Some klp-build fixes and improvements Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 01/53] objtool/klp: Fix is_uncorrelated_static_local() for Clang Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 02/53] objtool/klp: Fix .data..once static local non-correlation Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 03/53] objtool/klp: Don't correlate __ADDRESSABLE() symbols Josh Poimboeuf
2026-05-01 10:26   ` Song Liu
2026-05-01  4:07 ` [PATCH v2 04/53] objtool/klp: Don't correlate absolute symbols Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 05/53] objtool/klp: Don't correlate __initstub__ symbols Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 06/53] objtool/klp: Don't report uncorrelated functions as new Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 07/53] objtool/klp: Improve local label check Josh Poimboeuf
2026-05-01 10:27   ` Song Liu
2026-05-01  4:07 ` [PATCH v2 08/53] objtool/klp: Fix create_fake_symbols() skipping entsize-based sections Josh Poimboeuf
2026-05-01  4:07 ` [PATCH v2 09/53] objtool: Replace iterator callback with for_each_sym_by_mangled_name() Josh Poimboeuf
2026-05-01 10:28   ` Song Liu
2026-05-04 13:59   ` Miroslav Benes
2026-05-01  4:07 ` [PATCH v2 10/53] objtool/klp: Fix --debug-checksum for duplicate symbol names Josh Poimboeuf
2026-05-04 14:04   ` Miroslav Benes
2026-05-01  4:07 ` [PATCH v2 11/53] objtool/klp: Fix handling of zero-length .altinstr_replacement sections Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 12/53] objtool/klp: Fix cloning of zero-length section symbols Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 13/53] objtool/klp: Fix XXH3 state memory leak Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 14/53] objtool/klp: Fix extraction of text annotations for alternatives Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 15/53] objtool/klp: Fix kCFI trap handling Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 16/53] objtool/klp: Fix relocation conversion failures for R_X86_64_NONE Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 17/53] objtool: Move mark_rodata() to elf.c Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 18/53] objtool/klp: Simplify reloc symbol conversion Josh Poimboeuf
2026-05-01 10:31   ` Song Liu
2026-05-04 14:04   ` Miroslav Benes
2026-05-01  4:08 ` [PATCH v2 19/53] objtool/klp: Fix pointer comparisons for rodata objects Josh Poimboeuf
2026-05-01 10:35   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 20/53] objtool/klp: Don't correlate .rodata.cst* constant pool objects Josh Poimboeuf
2026-05-01 10:37   ` Song Liu
2026-05-01 17:04     ` Josh Poimboeuf
2026-05-01 17:31       ` Song Liu
2026-05-01  4:08 ` [PATCH v2 21/53] objtool/klp: Fix reloc corruption in convert_reloc_sym_to_secsym() Josh Poimboeuf
2026-05-01 10:38   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 22/53] objtool: Fix reloc hash collision in find_reloc_by_dest_range() Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 23/53] klp-build: Fix hang on out-of-date .config Josh Poimboeuf
2026-05-01 10:39   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 24/53] klp-build: Fix checksum comparison for changed offsets Josh Poimboeuf
2026-05-01 10:41   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 25/53] klp-build: Don't use errexit Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 26/53] klp-build: Validate patch file existence Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 27/53] klp-build: Suppress excessive fuzz output by default Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 28/53] klp-build: Fix patch cleanup on interrupt Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 29/53] klp-build: Reject patches to vDSO Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 30/53] klp-build: Reject patches to realmode Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 31/53] klp-build: Print "objtool klp diff" command in verbose mode Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 32/53] klp-build: Remove redundant SRC and OBJ variables Josh Poimboeuf
2026-05-01 10:42   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 33/53] objtool/klp: Don't set sym->file for section symbols Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 34/53] objtool: Include libsubcmd headers directly from source tree Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 35/53] objtool/klp: Create empty checksum sections for function-less object files Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 36/53] objtool/klp: Handle Clang .data..Lanon anonymous data sections Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 37/53] objtool: Add is_alias_sym() helper Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 38/53] objtool: Add is_cold_func() helper Josh Poimboeuf
2026-05-01 10:43   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 39/53] objtool/klp: Extricate checksum calculation from validate_branch() Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 40/53] objtool: Consolidate file decoding into decode_file() Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 41/53] objtool/klp: Add "objtool klp checksum" subcommand Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 42/53] klp-build: Use " Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 43/53] objtool/klp: Remove "objtool --checksum" Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 44/53] klp-build: Validate short-circuit prerequisites Josh Poimboeuf
2026-05-01 10:49   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 45/53] objtool/klp: Calculate object checksums Josh Poimboeuf
2026-05-01 10:53   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 46/53] objtool/klp: Rewrite symbol correlation algorithm Josh Poimboeuf
2026-05-01 12:07   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 47/53] objtool/klp: Add correlation debugging output Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 48/53] objtool: Add insn_sym() helper Josh Poimboeuf
2026-05-01 12:11   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 49/53] objtool/klp: Fix position-dependent checksums for non-relocated jumps/calls Josh Poimboeuf
2026-05-01 12:16   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 50/53] objtool: Grow __cfi_* prefix symbols for all CFI+CALL_PADDING Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 51/53] objtool/klp: Fix kCFI prefix finding/cloning Josh Poimboeuf
2026-05-01 12:17   ` Song Liu
2026-05-01  4:08 ` [PATCH v2 52/53] objtool: Improve and simplify prefix symbol detection Josh Poimboeuf
2026-05-01  4:08 ` [PATCH v2 53/53] objtool/klp: Cache dont_correlate() result Josh Poimboeuf
2026-05-01 18:47 ` [PATCH v2 00/53] objtool/klp: Some klp-build fixes and improvements Josh Poimboeuf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox