Revert "objtool: Increase per-function WARN_FUNC() rate limit"

This reverts commit 0a7fb6f07e.

The "skipping duplicate warnings" warning is technically not an actual
warning, which can cause confusion.  This feature isn't all that useful
anyway.  It's exceedingly rare for a function to have more than one
unrelated warning.

Suggested-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/e5abe5e858acf1a9207a5dfa0f37d17ac9dca872.1743481539.git.jpoimboe@kernel.org
This commit is contained in:
Josh Poimboeuf 2025-03-31 21:26:39 -07:00 committed by Ingo Molnar
parent 188d90f817
commit c5610071a6
3 changed files with 6 additions and 14 deletions

View file

@ -3545,7 +3545,7 @@ static int validate_branch(struct objtool_file *file, struct symbol *func,
WARN("%s() falls through to next function %s()",
func->name, insn_func(insn)->name);
func->warnings++;
func->warned = 1;
return 1;
}
@ -4576,7 +4576,7 @@ static void disas_warned_funcs(struct objtool_file *file)
char *funcs = NULL, *tmp;
for_each_sym(file, sym) {
if (sym->warnings) {
if (sym->warned) {
if (!funcs) {
funcs = malloc(strlen(sym->name) + 1);
if (!funcs) {

View file

@ -65,11 +65,11 @@ struct symbol {
u8 return_thunk : 1;
u8 fentry : 1;
u8 profiling_func : 1;
u8 warned : 1;
u8 embedded_insn : 1;
u8 local_label : 1;
u8 frame_pointer : 1;
u8 ignore : 1;
u8 warnings : 2;
struct list_head pv_target;
struct reloc *relocs;
};

View file

@ -57,22 +57,14 @@ static inline char *offstr(struct section *sec, unsigned long offset)
free(_str); \
})
#define WARN_LIMIT 2
#define WARN_INSN(insn, format, ...) \
({ \
struct instruction *_insn = (insn); \
BUILD_BUG_ON(WARN_LIMIT > 2); \
if (!_insn->sym || _insn->sym->warnings < WARN_LIMIT) { \
if (!_insn->sym || !_insn->sym->warned) \
WARN_FUNC(format, _insn->sec, _insn->offset, \
##__VA_ARGS__); \
if (_insn->sym) \
_insn->sym->warnings++; \
} else if (_insn->sym && _insn->sym->warnings == WARN_LIMIT) { \
WARN_FUNC("skipping duplicate warning(s)", \
_insn->sec, _insn->offset); \
_insn->sym->warnings++; \
} \
if (_insn->sym) \
_insn->sym->warned = 1; \
})
#define BT_INSN(insn, format, ...) \