[PATCH] docs/misra: add Rule 7.4 and 9.4

Stefano Stabellini posted 1 patch 10 months ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20230706224619.1092613-1-sstabellini@kernel.org
There is a newer version of this series
docs/misra/rules.rst | 12 ++++++++++++
1 file changed, 12 insertions(+)
[PATCH] docs/misra: add Rule 7.4 and 9.4
Posted by Stefano Stabellini 10 months ago
From: Stefano Stabellini <stefano.stabellini@amd.com>

Rule 9.4 is non-controversial and we have no violations.

Rule 7.4 is considered a good idea with the caveat that assigning a
string literal to const void is allowed. I added a note to specify it.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
---
 docs/misra/rules.rst | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst
index 622f35410c..986d031786 100644
--- a/docs/misra/rules.rst
+++ b/docs/misra/rules.rst
@@ -203,6 +203,13 @@ maintainers if you want to suggest a change.
      - The lowercase character l shall not be used in a literal suffix
      -
 
+   * - `Rule 7.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_07_04.c>`_
+     - Required
+     - A string literal shall not be assigned to an object unless the
+       objects type is pointer to const-qualified char
+     - Assigning a string literal to any object with type
+       "pointer to const-qualified void" is allowed
+
    * - `Rule 8.1 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_08_01.c>`_
      - Required
      - Types shall be explicitly specified
@@ -275,6 +282,11 @@ maintainers if you want to suggest a change.
        braces
      -
 
+   * - `Rule 9.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_09_04.c>`_
+     - Required
+     - An element of an object shall not be initialized more than once
+     -
+
    * - `Rule 12.5 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_12_05.c>`_
      - Mandatory
      - The sizeof operator shall not have an operand which is a function
-- 
2.25.1
Re: [PATCH] docs/misra: add Rule 7.4 and 9.4
Posted by Jan Beulich 10 months ago
On 07.07.2023 00:46, Stefano Stabellini wrote:
> --- a/docs/misra/rules.rst
> +++ b/docs/misra/rules.rst
> @@ -203,6 +203,13 @@ maintainers if you want to suggest a change.
>       - The lowercase character l shall not be used in a literal suffix
>       -
>  
> +   * - `Rule 7.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_07_04.c>`_
> +     - Required
> +     - A string literal shall not be assigned to an object unless the
> +       objects type is pointer to const-qualified char
> +     - Assigning a string literal to any object with type
> +       "pointer to const-qualified void" is allowed

I guess this is relevant also in a few other cases: Considering the
significant difference between title and actual text of the rule, and
further assuming people looking here won't always pull out the full
doc (they may not even have a copy of it), I think it is important to
also mention in a remark that despite the title all "character types"
are permitted, as long as string element type and character type match.
Since the compiler won't allow mismatches when the lhs type isn't void,
mandating no use of casts to "satisfy" the rule may be a way to express
our intentions.

Jan
Re: [PATCH] docs/misra: add Rule 7.4 and 9.4
Posted by Stefano Stabellini 9 months, 4 weeks ago
On Fri, 7 Jul 2023, Jan Beulich wrote:
> On 07.07.2023 00:46, Stefano Stabellini wrote:
> > --- a/docs/misra/rules.rst
> > +++ b/docs/misra/rules.rst
> > @@ -203,6 +203,13 @@ maintainers if you want to suggest a change.
> >       - The lowercase character l shall not be used in a literal suffix
> >       -
> >  
> > +   * - `Rule 7.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_07_04.c>`_
> > +     - Required
> > +     - A string literal shall not be assigned to an object unless the
> > +       objects type is pointer to const-qualified char
> > +     - Assigning a string literal to any object with type
> > +       "pointer to const-qualified void" is allowed
> 
> I guess this is relevant also in a few other cases: Considering the
> significant difference between title and actual text of the rule, and
> further assuming people looking here won't always pull out the full
> doc (they may not even have a copy of it), I think it is important to
> also mention in a remark that despite the title all "character types"
> are permitted, as long as string element type and character type match.
> Since the compiler won't allow mismatches when the lhs type isn't void,
> mandating no use of casts to "satisfy" the rule may be a way to express
> our intentions.

What about:

   * - `Rule 7.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_07_04.c>`_
     - Required
     - A string literal shall not be assigned to an object unless the
       objects type is pointer to const-qualified char
     - All "character types" are permitted, as long as the string
       element type and the character type match. (There should be no
       casts.) Assigning a string literal to any object with type
       "pointer to const-qualified void" is allowed.
Re: [PATCH] docs/misra: add Rule 7.4 and 9.4
Posted by Jan Beulich 9 months, 3 weeks ago
On 07.07.2023 23:10, Stefano Stabellini wrote:
> On Fri, 7 Jul 2023, Jan Beulich wrote:
>> On 07.07.2023 00:46, Stefano Stabellini wrote:
>>> --- a/docs/misra/rules.rst
>>> +++ b/docs/misra/rules.rst
>>> @@ -203,6 +203,13 @@ maintainers if you want to suggest a change.
>>>       - The lowercase character l shall not be used in a literal suffix
>>>       -
>>>  
>>> +   * - `Rule 7.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_07_04.c>`_
>>> +     - Required
>>> +     - A string literal shall not be assigned to an object unless the
>>> +       objects type is pointer to const-qualified char
>>> +     - Assigning a string literal to any object with type
>>> +       "pointer to const-qualified void" is allowed
>>
>> I guess this is relevant also in a few other cases: Considering the
>> significant difference between title and actual text of the rule, and
>> further assuming people looking here won't always pull out the full
>> doc (they may not even have a copy of it), I think it is important to
>> also mention in a remark that despite the title all "character types"
>> are permitted, as long as string element type and character type match.
>> Since the compiler won't allow mismatches when the lhs type isn't void,
>> mandating no use of casts to "satisfy" the rule may be a way to express
>> our intentions.
> 
> What about:
> 
>    * - `Rule 7.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_07_04.c>`_
>      - Required
>      - A string literal shall not be assigned to an object unless the
>        objects type is pointer to const-qualified char
>      - All "character types" are permitted, as long as the string
>        element type and the character type match. (There should be no
>        casts.) Assigning a string literal to any object with type
>        "pointer to const-qualified void" is allowed.

SGTM.

Jan