[PATCH] xen:add deviations for MISRA C 2012 Rule R5.2

Alessandro Zucchelli posted 1 patch 2 months, 2 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/41a1127e6d77d2be350e7679bd1034e0c2918e94.1731487210.git.alessandro.zucchelli@bugseng.com
automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
docs/misra/deviations.rst                        | 7 +++++++
2 files changed, 11 insertions(+)
[PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Alessandro Zucchelli 2 months, 2 weeks ago
This addresses violations of MISRA C:2012 Rule 5.2 which states as
following: Identifiers declared in the same scope and name space shall
be distinct.

This deviation addresses violations of Rule 5.2 arising from
identifiers generated through token pasting macros CHECK_NAME_ and
DEFINE_COMPAT_HANDLE.

No functional change.

Signed-off-by: Alessandro Zucchelli <alessandro.zucchelli@bugseng.com>
---
 automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
 docs/misra/deviations.rst                        | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
index c5663eed2b..ee1ac3b602 100644
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -88,6 +88,10 @@ it defines would (in the common case) be already defined. Peer reviewed by the c
 # Series 5.
 #
 
+-doc_begin="Identifiers generated through the following token pasting macros are excluded from compliance to this rule"
+-config=MC3R1.R5.2,reports+={safe, "any_area(any_loc(any_exp(macro(^CHECK_NAME_$))&&any_exp(macro(^DEFINE_COMPAT_HANDLE$))))"}
+-doc_end
+
 -doc_begin="The project adopted the rule with an exception listed in
 'docs/misra/rules.rst'"
 -config=MC3R1.R5.3,reports+={safe, "any_area(any_loc(any_exp(macro(^READ_SYSREG$))&&any_exp(macro(^WRITE_SYSREG$))))"}
diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
index 15a993d050..aa98acc45f 100644
--- a/docs/misra/deviations.rst
+++ b/docs/misra/deviations.rst
@@ -97,6 +97,13 @@ Deviations related to MISRA C:2012 Rules:
        are not instances of commented-out code.
      - Tagged as `safe` for ECLAIR.
 
+   * - R5.2
+     - Macros CHECK_NAME_ and DEFINE_COMPAT_HANDLE through token pasting
+       generate non-compliant identifiers. Such identifiers are allowed.
+     - Tagged as `safe` for ECLAIR. So far, the following macros are deviated:
+         - CHECK_NAME_
+         - DEFINE_COMPAT_HANDLE
+
    * - R5.3
      - As specified in rules.rst, shadowing due to macros being used as macro
        arguments is allowed, as it's deemed not at risk of causing developer
-- 
2.43.0
Re: [PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Jan Beulich 2 months, 2 weeks ago
On 13.11.2024 09:41, Alessandro Zucchelli wrote:
> This addresses violations of MISRA C:2012 Rule 5.2 which states as
> following: Identifiers declared in the same scope and name space shall
> be distinct.
> 
> This deviation addresses violations of Rule 5.2 arising from
> identifiers generated through token pasting macros CHECK_NAME_ and
> DEFINE_COMPAT_HANDLE.

For each of the two, can you provide an example of where collisions
result? At least for the latter I can't even see how that would
work without the compiler complaining (i.e. the build breaking).

Jan
Re: [PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Alessandro Zucchelli 2 months, 2 weeks ago
Hi Jan,
At this link you can see all the violations of Rule 5.2:

https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/bugseng/xen/ECLAIR_normal/40_characters/X86_64/8143097084/PROJECT.ecd;/by_service/MC3R1.R5.2.html

By deviating the two macros CHECK_NAME_ and DEFINE_COMPAT_HANDLE all the 
violations are addressed.

On 2024-11-13 11:31, Jan Beulich wrote:
> On 13.11.2024 09:41, Alessandro Zucchelli wrote:
>> This addresses violations of MISRA C:2012 Rule 5.2 which states as
>> following: Identifiers declared in the same scope and name space shall
>> be distinct.
>> 
>> This deviation addresses violations of Rule 5.2 arising from
>> identifiers generated through token pasting macros CHECK_NAME_ and
>> DEFINE_COMPAT_HANDLE.
> 
> For each of the two, can you provide an example of where collisions
> result? At least for the latter I can't even see how that would
> work without the compiler complaining (i.e. the build breaking).
> 
> Jan

-- 
Alessandro Zucchelli, B.Sc.

Software Engineer, BUGSENG (https://bugseng.com)
Re: [PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Jan Beulich 2 months, 2 weeks ago
On 13.11.2024 11:48, Alessandro Zucchelli wrote:
> At this link you can see all the violations of Rule 5.2:
> 
> https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/bugseng/xen/ECLAIR_normal/40_characters/X86_64/8143097084/PROJECT.ecd;/by_service/MC3R1.R5.2.html

Thank you. From a cursory look these all appear to be a result of the 40
chars limit we put in place (quite arbitrarily). That's not mentioned at
all ...

> By deviating the two macros CHECK_NAME_ and DEFINE_COMPAT_HANDLE all the 
> violations are addressed.
> 
> On 2024-11-13 11:31, Jan Beulich wrote:
>> On 13.11.2024 09:41, Alessandro Zucchelli wrote:
>>> This addresses violations of MISRA C:2012 Rule 5.2 which states as
>>> following: Identifiers declared in the same scope and name space shall
>>> be distinct.
>>>
>>> This deviation addresses violations of Rule 5.2 arising from
>>> identifiers generated through token pasting macros CHECK_NAME_ and
>>> DEFINE_COMPAT_HANDLE.

... in the description.

Together with the 5.4 patch having the same lack of context, I wonder
whether we shouldn't simply up that limit. Or else, as suggested there,
to instead exclude such derived identifiers. After all the derived ones
will be distinct as long as what they're derived from is distinct.

Finally - please don't top-post.

Jan

>> For each of the two, can you provide an example of where collisions
>> result? At least for the latter I can't even see how that would
>> work without the compiler complaining (i.e. the build breaking).
>>
>> Jan
>
Re: [PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Stefano Stabellini 2 months, 2 weeks ago
On Wed, 13 Nov 2024, Jan Beulich wrote:
> On 13.11.2024 11:48, Alessandro Zucchelli wrote:
> > At this link you can see all the violations of Rule 5.2:
> > 
> > https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/bugseng/xen/ECLAIR_normal/40_characters/X86_64/8143097084/PROJECT.ecd;/by_service/MC3R1.R5.2.html
> 
> Thank you. From a cursory look these all appear to be a result of the 40
> chars limit we put in place (quite arbitrarily). That's not mentioned at
> all ...
> 
> > By deviating the two macros CHECK_NAME_ and DEFINE_COMPAT_HANDLE all the 
> > violations are addressed.
> > 
> > On 2024-11-13 11:31, Jan Beulich wrote:
> >> On 13.11.2024 09:41, Alessandro Zucchelli wrote:
> >>> This addresses violations of MISRA C:2012 Rule 5.2 which states as
> >>> following: Identifiers declared in the same scope and name space shall
> >>> be distinct.
> >>>
> >>> This deviation addresses violations of Rule 5.2 arising from
> >>> identifiers generated through token pasting macros CHECK_NAME_ and
> >>> DEFINE_COMPAT_HANDLE.
> 
> ... in the description.
> 
> Together with the 5.4 patch having the same lack of context, I wonder
> whether we shouldn't simply up that limit.

Yes: if we up to the limit to 64 (another arbitrary number), can be mark
both 5.4 and 5.1 as clean? If so, I think we should do it right away.


> Or else, as suggested there,
> to instead exclude such derived identifiers. After all the derived ones
> will be distinct as long as what they're derived from is distinct.
> 
> Finally - please don't top-post.
> 
> Jan
> 
> >> For each of the two, can you provide an example of where collisions
> >> result? At least for the latter I can't even see how that would
> >> work without the compiler complaining (i.e. the build breaking).
Re: [PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Alessandro Zucchelli 2 months, 2 weeks ago
On 2024-11-14 03:23, Stefano Stabellini wrote:
> On Wed, 13 Nov 2024, Jan Beulich wrote:
>> On 13.11.2024 11:48, Alessandro Zucchelli wrote:
>> > At this link you can see all the violations of Rule 5.2:
>> >
>> > https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/bugseng/xen/ECLAIR_normal/40_characters/X86_64/8143097084/PROJECT.ecd;/by_service/MC3R1.R5.2.html
>> 
>> Thank you. From a cursory look these all appear to be a result of the 
>> 40
>> chars limit we put in place (quite arbitrarily). That's not mentioned 
>> at
>> all ...
>> 
>> > By deviating the two macros CHECK_NAME_ and DEFINE_COMPAT_HANDLE all the
>> > violations are addressed.
>> >
>> > On 2024-11-13 11:31, Jan Beulich wrote:
>> >> On 13.11.2024 09:41, Alessandro Zucchelli wrote:
>> >>> This addresses violations of MISRA C:2012 Rule 5.2 which states as
>> >>> following: Identifiers declared in the same scope and name space shall
>> >>> be distinct.
>> >>>
>> >>> This deviation addresses violations of Rule 5.2 arising from
>> >>> identifiers generated through token pasting macros CHECK_NAME_ and
>> >>> DEFINE_COMPAT_HANDLE.
>> 
>> ... in the description.
>> 
>> Together with the 5.4 patch having the same lack of context, I wonder
>> whether we shouldn't simply up that limit.
> 
> Yes: if we up to the limit to 64 (another arbitrary number), can be 
> mark
> both 5.4 and 5.1 as clean? If so, I think we should do it right away.
> 
Hi,
In doc/misra/rules.rst, the limit is documented as 40, but in the 
configuration
file automation/eclair_analysis/ECLAIR/toolchain.ecl, it is set to 63.

If you intend to proceed by increasing the limit, you may ignore this 
deviation
as well as my other deviation concerning Rule 5.4. In that case, please 
update
the documentation in doc/misra/rules.rst to reflect the new limit.

> 
>> Or else, as suggested there,
>> to instead exclude such derived identifiers. After all the derived 
>> ones
>> will be distinct as long as what they're derived from is distinct.
>> 
>> Finally - please don't top-post.
>> 
>> Jan
>> 
>> >> For each of the two, can you provide an example of where collisions
>> >> result? At least for the latter I can't even see how that would
>> >> work without the compiler complaining (i.e. the build breaking).

-- 
Alessandro Zucchelli, B.Sc.

Software Engineer, BUGSENG (https://bugseng.com)
Re: [PATCH] xen:add deviations for MISRA C 2012 Rule R5.2
Posted by Stefano Stabellini 2 months, 2 weeks ago
On Fri, 15 Nov 2024, Alessandro Zucchelli wrote:
> On 2024-11-14 03:23, Stefano Stabellini wrote:
> > On Wed, 13 Nov 2024, Jan Beulich wrote:
> > > On 13.11.2024 11:48, Alessandro Zucchelli wrote:
> > > > At this link you can see all the violations of Rule 5.2:
> > > >
> > > >
> > > https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/bugseng/xen/ECLAIR_normal/40_characters/X86_64/8143097084/PROJECT.ecd;/by_service/MC3R1.R5.2.html
> > > 
> > > Thank you. From a cursory look these all appear to be a result of the 40
> > > chars limit we put in place (quite arbitrarily). That's not mentioned at
> > > all ...
> > > 
> > > > By deviating the two macros CHECK_NAME_ and DEFINE_COMPAT_HANDLE all the
> > > > violations are addressed.
> > > >
> > > > On 2024-11-13 11:31, Jan Beulich wrote:
> > > >> On 13.11.2024 09:41, Alessandro Zucchelli wrote:
> > > >>> This addresses violations of MISRA C:2012 Rule 5.2 which states as
> > > >>> following: Identifiers declared in the same scope and name space shall
> > > >>> be distinct.
> > > >>>
> > > >>> This deviation addresses violations of Rule 5.2 arising from
> > > >>> identifiers generated through token pasting macros CHECK_NAME_ and
> > > >>> DEFINE_COMPAT_HANDLE.
> > > 
> > > ... in the description.
> > > 
> > > Together with the 5.4 patch having the same lack of context, I wonder
> > > whether we shouldn't simply up that limit.
> > 
> > Yes: if we up to the limit to 64 (another arbitrary number), can be mark
> > both 5.4 and 5.1 as clean? If so, I think we should do it right away.
> > 
> Hi,
> In doc/misra/rules.rst, the limit is documented as 40, but in the
> configuration
> file automation/eclair_analysis/ECLAIR/toolchain.ecl, it is set to 63.
> 
> If you intend to proceed by increasing the limit, you may ignore this
> deviation
> as well as my other deviation concerning Rule 5.4. In that case, please update
> the documentation in doc/misra/rules.rst to reflect the new limit.

Got it. See:
https://marc.info/?l=xen-devel&m=173171643022486