[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] misra: deviate MISRA C Rule 10.1 for boolean operands of arithmetic


  • To: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Wed, 4 Nov 2026 14:31:04 +0100
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=suse.com header.i="@suse.com" header.h="Content-Transfer-Encoding:Content-Type:In-Reply-To:Autocrypt:From:Content-Language:References:Cc:To:Subject:User-Agent:MIME-Version:Date:Message-ID"
  • Autocrypt: addr=jbeulich@xxxxxxxx; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL
  • Cc: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>, Doug Goldstein <cardoe@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger@xxxxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Wed, 04 Nov 2026 13:31:10 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 04.11.2026 14:28, Dmytro Prokopchuk wrote:
> 
> 
> On 11/2/26 17:45, Jan Beulich wrote:
>> On 02.11.2026 15:43, Dmytro Prokopchuk wrote:
>>>
>>>
>>> On 11/2/26 12:52, Jan Beulich wrote:
>>>> On 02.11.2026 11:20, Dmytro Prokopchuk wrote:
>>>>> On 10/26/26 13:13, Jan Beulich wrote:
>>>>>> On 19.10.2026 18:54, Dmytro Prokopchuk1 wrote:
>>>>>>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>>>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>>>>>>> @@ -335,6 +335,11 @@ still non-negative."
>>>>>>>     -config=MC3A2.R10.1,etypes+={safe, 
>>>>>>> "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))",
>>>>>>>  "dst_type(ebool||boolean)"}
>>>>>>>     -doc_end
>>>>>>>     
>>>>>>> +-doc_begin="The result of relational, equality and logical negation 
>>>>>>> operators has type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 
>>>>>>> 6.5.3.3p5),
>>>>>>> +so using it as an operand of an arithmetic operator is well defined 
>>>>>>> and well known to all Xen developers."
>>>>>>> +-config=MC3A2.R10.1,etypes+={safe, 
>>>>>>> "stmt(operator(add||sub||mul||add_assign||sub_assign))", 
>>>>>>> "src_type(ebool||boolean)"}
>>>>>>> +-doc_end
>>>>>>
>>>>>> Why the restriction to add/sub/mul? The text ...
>>>>>
>>>>> Because this is the pattern found in the Eclair's report, and it can be
>>>>> deviated safely (as opposed to unary minus, division and remainder which
>>>>> are not included intentionally).
>>>>
>>>> Division and remainder aren't very useful with boolean operands, so can
>>>> surely be left out. However, more generally: How does "Eclair's report"
>>>> matter here? In deviation wording we want to go from what the Misra spec
>>>> says. The spec covers all operators. Hence any special casing we do
>>>> wants to be justified. And, right now at least, I see no justification
>>>> for restricting the deviation to just add/sub/mul.
>>>
>>> Agreed, the report shouldn't be the argument.
>>> The deviation should cover only the established idioms with a clear
>>> meaning, and leave the rule's protection in place elsewhere. With a
>>> Boolean operand these idioms are:
>>> - + and - (and += / -=): "count it if the condition holds",
>>> - * (and *=): "this value if the condition holds, else 0".
>>>
>>> Other operators have no such idiom (at least, I'm not aware of them).
>>
>> The use with * easily extends to <<. With that it's only logical to also
>> include >>.
>>
>> With + and - covered, it feels pretty much natural that relational
>> operators also want covering.
>>
>> Once there, and with division and modulo agreed upon to leave out, there
>> isn't that much else left, I think.
> 
> I agree these uses would be equally well defined.
> 
> My thought is about deviating them without a need. For these operators 
> there is currently nothing in Xen. Without the deviation the rule keeps 
> protecting new code: e.g. Boolean operand of << would be reported and 
> looked at, rather than silently accepted.
> 
> So I'd prefer to keep deviation limited to +, - and * (and assignment 
> forms). If you still think the wider scope is preferable, I'll of course 
> go with that in v3.

I do think the wider form is what we want to go with, yet at the same time
it's not just me to take that decision.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.