]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
objtool: Fix .cold function detection for duplicate symbols
authorJosh Poimboeuf <jpoimboe@kernel.org>
Thu, 20 Nov 2025 20:52:16 +0000 (12:52 -0800)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 21 Nov 2025 09:04:07 +0000 (10:04 +0100)
commit2c2acca2eabf53a954ed5aacef987bbf909b9f12
tree3c331b7468ad182555b258fedd6bcf99478410d5
parent024020e2b6adb4e568fb80f624b5e20d8943f107
objtool: Fix .cold function detection for duplicate symbols

The objtool .cold child/parent correlation is done in two phases: first
in elf_add_symbol() and later in add_jump_destinations().

The first phase is rather crude and can pick the wrong parent if there
are duplicates with the same name.

The second phase usually fixes that, but only if the parent has a direct
jump to the child.  It does *not* work if the only branch from the
parent to the child is an alternative or jump table entry.

Make the first phase more robust by looking for the parent in the same
STT_FILE as the child.

Fixes the following objtool warnings in an AutoFDO build with a large
CLANG_AUTOFDO_PROFILE profile:

  vmlinux.o: warning: objtool: rdev_add_key() falls through to next function rdev_add_key.cold()
  vmlinux.o: warning: objtool: rdev_set_default_key() falls through to next function rdev_set_default_key.cold()

Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/82c7b52e40efa75dd10e1c550cc75c1ce10ac2c9.1763671318.git.jpoimboe@kernel.org
tools/objtool/elf.c
tools/objtool/include/objtool/elf.h