summaryrefslogtreecommitdiff
path: root/scripts/kconfig/icons/git@git.tavy.me:linux.git
diff options
context:
space:
mode:
authorJosh Poimboeuf <jpoimboe@kernel.org>2026-04-09 20:51:27 -0700
committerJosh Poimboeuf <jpoimboe@kernel.org>2026-05-04 21:16:06 -0700
commit6016dd33a10a89d7db9509124d678d38916ab337 (patch)
treec445b14d91e5f2f980a165d123912e8046177cf6 /scripts/kconfig/icons/git@git.tavy.me:linux.git
parent873a2208ea31e822e0a5eea86b8a3fd07208db45 (diff)
objtool/klp: Rewrite symbol correlation algorithm
Rewrite the symbol correlation code, using a tiered list of deterministic strategies in a loop. For duplicately named symbols, each tier applies a filter with the goal of finding a 1:1 deterministic correlation between the original and patched version of the symbol. The three matching strategies are: find_twin(): A funnel of progressively tighter filters. Candidates with the same demangled name are counted at four levels: name, scope (local-vs-global), file (strict file association), and checksum (unchanged functions). The widest level that yields a 1:1 match wins, narrower levels are only tried when the wider level is ambiguous. find_twin_suffixed(): Uses already-correlated LLVM symbol pairs to map .llvm.<hash> suffixes from orig to patched. Because all promoted symbols from the same TU share the same hash, one correlated pair seeds the mapping for the entire TU. find_twin_positional(): Last resort, matches symbols by position among same-named candidates, similar to livepatch sympos. Used for data objects like __quirk variables where no deterministic filter can distinguish the candidates. Overall this works much better than the existing algorithm, particularly with LTO kernels. Acked-by: Song Liu <song@kernel.org> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Diffstat (limited to 'scripts/kconfig/icons/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions