From: Julia Lawall <julia.lawall@lip6.fr>
To: Joe Perches <joe@perches.com>
Cc: Dan Carpenter <error27@gmail.com>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: Possible code defects: macros and precedence
Date: Sun, 4 Sep 2016 18:10:18 +0800 (SGT) [thread overview]
Message-ID: <alpine.DEB.2.10.1609041809260.3178@hadrien> (raw)
In-Reply-To: <1472927739.5018.13.camel@perches.com>
On Sat, 3 Sep 2016, Joe Perches wrote:
> There are many nominally incorrect macro definitions
> in linux-kernel source where parentheses are not used
> for various macros arguments with calculations.
>
> Does coccinelle or smatch have the ability to detect
> potential macro misuse where arguments passed to the
> macro are not correctly parenthesized by the macro?
>
> Something like:
>
> #define A 1
> #define B 2
> #define shift(val) (val << 1)
>
> where a use is:
>
> int c = shift(A | B)
>
> where the actual result is 5 but the expected result is 6?
>
> Can either tool suggest changing the macro to
>
> #define shift(val) ((val) << 1)
Coccinelle could do this. It is possible to match macro parameters, and
it is possible to match binary operators generically. I can look into it.
julia
next prev parent reply other threads:[~2016-09-04 10:10 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-03 18:35 Joe Perches
2016-09-03 20:18 ` Dan Carpenter
2016-09-03 22:20 ` [PATCH] checkpatch: Add a --strict test for macro argument reuse " Joe Perches
2016-09-04 14:42 ` Joe Perches
2016-09-04 10:10 ` Julia Lawall [this message]
2016-09-04 15:06 ` Possible code defects: macros " Joe Perches
[not found] ` <alpine.DEB.2.10.1609172221110.3124@hadrien>
2016-09-17 21:27 ` Joe Perches
2016-09-18 5:09 ` Julia Lawall
2016-09-18 9:31 ` Joe Perches
2016-09-20 13:14 ` Julia Lawall
2016-09-20 17:07 ` Joe Perches
2016-09-20 18:03 ` Joe Perches
2016-09-20 23:47 ` Joe Perches
2016-09-21 5:04 ` Julia Lawall
2016-09-17 21:57 ` Joe Perches
2016-09-18 4:57 ` Julia Lawall
2016-09-18 9:27 ` Joe Perches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.10.1609041809260.3178@hadrien \
--to=julia.lawall@lip6.fr \
--cc=error27@gmail.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome