docs/misra: add R11.1 R11.2 R11.3 R11.6

Add MISRA C Rules 11.1, 11.2, 11.3, 11.6 as discussed.

Explicitly add in the notes that conversions to integer types are
permitted if the destination type has enough bits to hold the entire
value. GCC gives enough guarantees in terms of preserving the bit
content in such situations.

Also allow for bool conversions (e.g. to check if a function point is
valid).

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Stefano Stabellini committed 2023-11-15 16:01:55 -08:00
1 parent 7ad0c774e4
commit 06e484767b
1 file changed
+30
+30
View File
@@ -383,6 +383,36 @@ maintainers if you want to suggest a change.
CFLAGS="-Warith-conversion -Wno-error=arith-conversion" make -C xen CFLAGS="-Warith-conversion -Wno-error=arith-conversion" make -C xen
* - `Rule 11.1 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_11_01.c>`_
- Required
- Conversions shall not be performed between a pointer to a
function and any other type
- All conversions to integer types are permitted if the destination
type has enough bits to hold the entire value. Conversions to
bool and void* are permitted.
* - `Rule 11.2 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_11_02.c>`_
- Required
- Conversions shall not be performed between a pointer to an
incomplete type and any other type
- All conversions to integer types are permitted if the destination
type has enough bits to hold the entire value. Conversions to
bool and void* are permitted.
* - `Rule 11.3 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_11_03.c>`_
- Required
- A cast shall not be performed between a pointer to object type
and a pointer to a different object type
-
* - `Rule 11.6 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_11_06.c>`_
- Required
- A cast shall not be performed between pointer to void and an
arithmetic type
- All conversions to integer types are permitted if the destination
type has enough bits to hold the entire value. Conversions to
bool are permitted.
* - `Rule 11.7 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_11_07.c>`_ * - `Rule 11.7 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_11_07.c>`_
- Required - Required
- A cast shall not be performed between pointer to object and a noninteger arithmetic type - A cast shall not be performed between pointer to object and a noninteger arithmetic type
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.