objtool: Fix false-positive "ignoring unreachables" warning
authorJosh Poimboeuf <jpoimboe@kernel.org>
Wed, 9 Apr 2025 22:49:36 +0000 (15:49 -0700)
committerIngo Molnar <mingo@kernel.org>
Thu, 10 Apr 2025 20:55:00 +0000 (22:55 +0200)
There's no need to try to automatically disable unreachable warnings if
they've already been manually disabled due to CONFIG_KCOV quirks.

This avoids a spurious warning with a KCOV kernel:

  fs/smb/client/cifs_unicode.o: warning: objtool: cifsConvertToUTF16.part.0+0xce5: ignoring unreachables due to jump table quirk

Fixes: eeff7ac61526 ("objtool: Warn when disabling unreachable warnings")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/5eb28eeb6a724b7d945a961cfdcf8d41e6edf3dc.1744238814.git.jpoimboe@kernel.org
Closes: https://lore.kernel.org/r/202504090910.QkvTAR36-lkp@intel.com/

tools/objtool/arch/x86/special.c

index 403e587..06ca4a2 100644 (file)
@@ -126,7 +126,7 @@ struct reloc *arch_find_switch_table(struct objtool_file *file,
         * indicates a rare GCC quirk/bug which can leave dead
         * code behind.
         */
-       if (reloc_type(text_reloc) == R_X86_64_PC32) {
+       if (!file->ignore_unreachables && reloc_type(text_reloc) == R_X86_64_PC32) {
                WARN_INSN(insn, "ignoring unreachables due to jump table quirk");
                file->ignore_unreachables = true;
        }