Re: [PATCH v2 3/9] objtool: Limit unreachable warnings to once per function

From: Josh Poimboeuf
Date: Thu Apr 13 2023 - 11:03:29 EST


On Thu, Apr 13, 2023 at 10:01:12AM +0200, Peter Zijlstra wrote:
> On Wed, Apr 12, 2023 at 12:03:18PM -0700, Josh Poimboeuf wrote:
>
> > diff --git a/tools/objtool/include/objtool/warn.h b/tools/objtool/include/objtool/warn.h
> > index b1c920dc9516..4ef9b278e5fd 100644
> > --- a/tools/objtool/include/objtool/warn.h
> > +++ b/tools/objtool/include/objtool/warn.h
> > @@ -55,7 +55,10 @@ static inline char *offstr(struct section *sec, unsigned long offset)
> >
> > #define WARN_INSN(insn, format, ...) \
> > ({ \
> > - WARN_FUNC(format, insn->sec, insn->offset, ##__VA_ARGS__); \
> > + if (!insn->sym || !insn->sym->warned) \
> > + WARN_FUNC(format, insn->sec, insn->offset, ##__VA_ARGS__);\
> > + if (insn->sym) \
> > + insn->sym->warned = 1; \
> > })
>
> Do we want to write that like:
>
> #define WARN_INSN(insn, format, ...) \
> ({ \
> struct instruction *_insn = (insn); \
> if (!_insn->sym || !_insn->sym->warned) \
> WARN_FUNC(format, _insn->sec, _insn->offset, ##__VA_ARGS__);\
> if (_insn->sym) \
> _insn->sym->warned = 1; \
> })
>
> instead ?

Yes indeed.

--
Josh