Message ID | 92dbcd9e5aa2ab45c50f3f567ddece59108568ad.1709219010.git.nicola.vetrini@bugseng.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | address some violations of MISRA C Rule 20.7 | expand |
On Thu, 29 Feb 2024, Nicola Vetrini wrote: > MISRA C Rule 20.7 states: "Expressions resulting from the expansion > of macro parameters shall be enclosed in parentheses". Therefore, some > macro definitions should gain additional parentheses to ensure that all > current and future users will be safe with respect to expansions that > can possibly alter the semantics of the passed-in macro parameter. > > No functional change. > > Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com> > --- > xen/include/xen/errno.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h > index 69b28dd3c6c5..506674701fae 100644 > --- a/xen/include/xen/errno.h > +++ b/xen/include/xen/errno.h > @@ -3,7 +3,7 @@ > > #ifndef __ASSEMBLY__ > > -#define XEN_ERRNO(name, value) name = value, > +#define XEN_ERRNO(name, value) name = (value), I see this and the fact that "name" was not parenthesized and it would deliberate right? So I guess the left side of an assignment doesn't need parenthesis?
On 2024-02-29 23:55, Stefano Stabellini wrote: > On Thu, 29 Feb 2024, Nicola Vetrini wrote: >> MISRA C Rule 20.7 states: "Expressions resulting from the expansion >> of macro parameters shall be enclosed in parentheses". Therefore, some >> macro definitions should gain additional parentheses to ensure that >> all >> current and future users will be safe with respect to expansions that >> can possibly alter the semantics of the passed-in macro parameter. >> >> No functional change. >> >> Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com> >> --- >> xen/include/xen/errno.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h >> index 69b28dd3c6c5..506674701fae 100644 >> --- a/xen/include/xen/errno.h >> +++ b/xen/include/xen/errno.h >> @@ -3,7 +3,7 @@ >> >> #ifndef __ASSEMBLY__ >> >> -#define XEN_ERRNO(name, value) name = value, >> +#define XEN_ERRNO(name, value) name = (value), > > I see this and the fact that "name" was not parenthesized and it would > deliberate right? So I guess the left side of an assignment doesn't > need > parenthesis? Exactly. Quoting from rules.rst: Extra parentheses are not required when macro parameters are used as function arguments, as macro arguments, array indices, lhs in assignments so, as noted in earlier discussions in this series, it could either be said that the rhs consisting of a single expression is similarly ok, or have (name) = (value) for consistency. Do note that a considerable percentage of violations are caused by these definitions (PERFCOUNTER, XEN_ERRNO and probably others in x86). -- Nicola Vetrini, BSc Software Engineer, BUGSENG srl (https://bugseng.com)
On 29.02.2024 16:28, Nicola Vetrini wrote: > MISRA C Rule 20.7 states: "Expressions resulting from the expansion > of macro parameters shall be enclosed in parentheses". Therefore, some > macro definitions should gain additional parentheses to ensure that all > current and future users will be safe with respect to expansions that > can possibly alter the semantics of the passed-in macro parameter. > > No functional change. > > Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com> Acked-by: Jan Beulich <jbeulich@suse.com>
diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h index 69b28dd3c6c5..506674701fae 100644 --- a/xen/include/xen/errno.h +++ b/xen/include/xen/errno.h @@ -3,7 +3,7 @@ #ifndef __ASSEMBLY__ -#define XEN_ERRNO(name, value) name = value, +#define XEN_ERRNO(name, value) name = (value), enum { #include <public/errno.h> };
MISRA C Rule 20.7 states: "Expressions resulting from the expansion of macro parameters shall be enclosed in parentheses". Therefore, some macro definitions should gain additional parentheses to ensure that all current and future users will be safe with respect to expansions that can possibly alter the semantics of the passed-in macro parameter. No functional change. Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com> --- xen/include/xen/errno.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)