Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

objtool/klp: Correlate locals to globals

Allow correlating original locals to patched globals, and vice versa.
This is needed when:

1. User adds/removes "static" for a function.
2. CONFIG_LTO_CLANG_THIN promotes local functions and objects to global
and add .llvm.<hash> suffix.

Signed-off-by: Song Liu <song@kernel.org>
Link: https://patch.msgid.link/20260305231531.3847295-8-song@kernel.org
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>

authored by

Song Liu and committed by
Josh Poimboeuf
4b57e97b cdea5cad

+30
+30
tools/objtool/klp-diff.c
··· 517 517 } 518 518 } 519 519 520 + /* Correlate original locals with patched globals */ 521 + for_each_sym(e->orig, sym1) { 522 + if (sym1->twin || dont_correlate(sym1) || !is_local_sym(sym1)) 523 + continue; 524 + 525 + sym2 = find_global_symbol_by_name(e->patched, sym1->name); 526 + if (!sym2 && find_global_symbol_by_demangled_name(e->patched, sym1, &sym2)) 527 + return -1; 528 + 529 + if (sym2 && !sym2->twin) { 530 + sym1->twin = sym2; 531 + sym2->twin = sym1; 532 + } 533 + } 534 + 535 + /* Correlate original globals with patched locals */ 536 + for_each_sym(e->patched, sym2) { 537 + if (sym2->twin || dont_correlate(sym2) || !is_local_sym(sym2)) 538 + continue; 539 + 540 + sym1 = find_global_symbol_by_name(e->orig, sym2->name); 541 + if (!sym1 && find_global_symbol_by_demangled_name(e->orig, sym2, &sym1)) 542 + return -1; 543 + 544 + if (sym1 && !sym1->twin) { 545 + sym2->twin = sym1; 546 + sym1->twin = sym2; 547 + } 548 + } 549 + 520 550 for_each_sym(e->orig, sym1) { 521 551 if (sym1->twin || dont_correlate(sym1)) 522 552 continue;