From nobody Wed Nov 11 13:07:13 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1794302762; cv=pass; d=zohomail.com; s=zohoarc; b=ixMnFpEqeLC2hxRPZ1kOvDz50pCi5NPXDZNCSjD4SxBUpJudVS+ghAIyBxZRVC3JE71MCbPs2Xp4QmDVo1lBy+we/c/mmg7uXFkYf4HphmWsU2YNU9UWjBx0JX88Smr9RaMUqAexAwqBpDu5ORtt5Hsq5inh7tcEFK0wPNzdkWY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1794302762; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KhyomJfgJIgsonxncZ868sPYlVtEL7oXP673nxF7Bis=; b=ZpNJd8bQ2okbqhJVmr73pGZ2BR363qGCkjHwpaCHaIlV104AKbpMKN+qzcQiniMr/s/BRz6rbIaAcdq58gN7kWMN5PkTvoRvdndSwd0qZqpsErej+RbarsA7G2TyRGPyEc59d13I8dvwfuBLq9QTw8YJFQdN2LLWwM/h0d7RnjM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1794302762149332.5674887128034; Tue, 10 Nov 2026 01:26:02 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1481323.1685176 (Exim 4.92) (envelope-from ) id 1xQi6n-0007rh-BE; Tue, 10 Nov 2026 09:25:41 +0000 Received: by outflank-mailman (output) from mailman id 1481323.1685176; Tue, 10 Nov 2026 09:25:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xQi6n-0007ra-7Y; Tue, 10 Nov 2026 09:25:41 +0000 Received: by outflank-mailman (input) for mailman id 1481323; Tue, 10 Nov 2026 09:25:39 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1xQi6l-0007rU-M0 for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 09:25:39 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1xQi6l-00AP5p-2J for xen-devel@lists.xenproject.org; Tue, 10 Nov 2026 10:25:39 +0100 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6af2e30d-2eae-0a2a0a5409dd-0a2a4508a9f4-24 for ; Tue, 10 Nov 2026 10:25:39 +0100 Received: from [40.107.159.95] (helo=OSPPR02CU001.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6af2e30e-f659-0a2a45080019-286b9f5ff46d-3 for ; Tue, 10 Nov 2026 10:25:38 +0100 Received: from AM9PR03MB7526.eurprd03.prod.outlook.com (2603:10a6:20b:3de::17) by AM9PR03MB7265.eurprd03.prod.outlook.com (2603:10a6:20b:266::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Tue, 10 Nov 2026 09:25:33 +0000 Received: from AM9PR03MB7526.eurprd03.prod.outlook.com ([fe80::904d:5820:80e1:41ba]) by AM9PR03MB7526.eurprd03.prod.outlook.com ([fe80::904d:5820:80e1:41ba%3]) with mapi id 15.21.0592.009; Tue, 10 Nov 2026 09:25:33 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:x-ms-exchange-senderadcheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ifoNSMyHuV6R+hGNRhk35AReGOk+LxT+InbQLGA8cdO2Zgt9YWejtp6O04HXrilBFSTBI4Iu0p0sGhzQpVPP34W6yh3KrShJNuNYT0OlnohUkCRfeWIsufvY/eTnHJZYa/fG834Ubtg9KzHRIC4idbsR4WLUFWPBv3KfsgM4PtoZsZ2frOEcRORRGEFOITXKttePzSyPRXh8ywL/ydGY3VYkZW4e8CVjc8wONKhOAk6EtvwTGIXFGvoNEZ04n5+eKJ8bjKC7wvgACLFwuruXeF9pw7RtdB04xoWF3BbSOco0Be3PmE0xBVJ9HQ1E3JsnkXA9TQ5IjYoXv7igJi4B/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KhyomJfgJIgsonxncZ868sPYlVtEL7oXP673nxF7Bis=; b=KN1nzU03bh5vc3LivpFiXjYmPxPyoJhHbLLKFWUT2E1lusrck5a1yoKRdeCw0+27rBmYTHtmJkDM5GMi0oG34HevHiGXIUD+mx2bqJPuRSbVjRlZBhr3vVhCDCWDy29WzsRJxCCiaq8MCf+sgOAQGyk2o7Y4YXpvrx+Y4yqa+dAo+7xrzQOgfMreoulw0YOm/my7QSfPbYVpwDnyCcBbW4bXHHprI/SPYoQXoPn2dCm4h6nyLf0hqMfvgeDUAqhdhPR2r5P4dYS6VYoKQYkOptUohzOKYwMlkr2yEU1cWwhnK3/KIV1Rd7R4KQmsoGz6ANefev8IFYicJcnWfmac3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KhyomJfgJIgsonxncZ868sPYlVtEL7oXP673nxF7Bis=; b=WttdspytLeD/NMwekF0OkF1aYo1SVo5EgguiugKNGM1cHxl9TwY1+mNI7ALljrF1ZeFOClb9Aqyd4RGus4iKI1ySTw2Fs1UNq8g2zed/7O9tllrbUPrBUFO6FlMrHmM4NF97GhlhiaD5N1mieahsgHu7BddDI6J4BNJ/4fTa/tCRrfTRhT6eyG/i2AiAGeDHwLBmZrXO9CyT9bXtk7g9x/VcmUmrNNIAwBYGPRJQp5i5A584dz/C47BXjpsZMPzWInu9lWJb9bsgxULTaqQUGnnTrbElS+KTkUlsudUDbea7XSuSfWbwasWAXJSzLtFbQ11L1OydJ5ct7Zs26pOkEA== From: Dmytro Prokopchuk1 To: "xen-devel@lists.xenproject.org" CC: Dmytro Prokopchuk1 , Nicola Vetrini , Doug Goldstein , Stefano Stabellini , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= Subject: [PATCH v2] misra: deviate MISRA C Rule 10.1 for boolean operands of arithmetic Thread-Topic: [PATCH v2] misra: deviate MISRA C Rule 10.1 for boolean operands of arithmetic Thread-Index: AQHdcPVvjdeDkUlAQk2bIG7MPIQshw== Date: Tue, 10 Nov 2026 09:25:32 +0000 Message-ID: <810b14fef78b77572a87a7268aa718274b975f80.1794298911.git.dmytro_prokopchuk1@epam.com> Accept-Language: en-US, uk-UA, ru-RU Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM9PR03MB7526:EE_|AM9PR03MB7265:EE_ x-ms-office365-filtering-correlation-id: 7f3d5aad-ed1d-4fa2-d636-08df3f0c91ef x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|23010399003|42112799006|376014|366016|1800799024|18002099003|6133799003|10067099003|3023799007|38070700021|11063799006|261009223027099003|261102123227099003|261102124527099003|261026121527099003|261028144727099003|56012099006|261022105027099003|261022075727099003|261009221227099003|261021121427099003|261021123027099003|261026140227099003|260925021911599003|260925021311599003|260925022911599003; x-microsoft-antispam-message-info: SowNl6tZ67LkBxL4hjF7n3qKKhGA0tN2CCJGdq8NROiMGRJ7HnWjefEgFUNjUfPJRL3L12xxrv42kd8D716rskTODajQFyPtYSBqyIOm7ri9pPK/RhUNDntpyjuSlMX5Pn+h642oY50UqAJ/NIk/ATZSpfmjqeDmLTV66G1ITaMxqu0arTpBD9sWmnuDV36N8uvkhPYzKiypG9j/MxVcGJowXQaLqmPSAmUH7HS5bzGzGwH6mo+cAWDW5T7aucTJQrKrq56crQkY3ZoNRl/VKA+S9aOe7RAzCdTwuX8GTnecmw1GLUkp5dCYZQQx8o2RyPQWUGbzvlTXqtxzOTQKbiR37gKfpoJm5QBXXpx2ktSgrRTz5xqgcR/hczR0Zw2E5hWiih6PHd90vYGiWtz5fkJOX9zlQi/+kBHGYkTT3Ap6uqKjAODVGCtNU8HdWrToD/vUDgRH4zkXMgLIVicrVnv/NrtjlPhy9xxBo7ZzivcOLer+AkvQj8fAd2HqfhyDO5+VxVTyBz6qpU9p3ocV1UBQXOGDOYPG8tQc1xZn/BSbsxQB8t5e/si7PR2k3RWriYyOPXv0moIk8S9qE6mdPAN6BmjT/GohMI/kphW7NFaKoYa2LG7RgobspdW09c+YH4Uo42zcP/XwvNQQRaTLTPskFqCa39QghKlDsG4qMsY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR03MB7526.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(23010399003)(42112799006)(376014)(366016)(1800799024)(18002099003)(6133799003)(10067099003)(3023799007)(38070700021)(11063799006)(261009223027099003)(261102123227099003)(261102124527099003)(261026121527099003)(261028144727099003)(56012099006)(261022105027099003)(261022075727099003)(261009221227099003)(261021121427099003)(261021123027099003)(261026140227099003)(260925021911599003)(260925021311599003)(260925022911599003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MU9LbDBMd2RnRTFyOEg0RW5UZ1pYdk92c3ZxYm90SEpYZHVwdDFlK25GNGkx?= =?utf-8?B?V2U0NzBIajdGS1poVTZ0T1RSY0dzSHlwTTh5TDVOeGtuRDBrZERNZG0zNjc2?= =?utf-8?B?cVd0VmFHaDM0UDNuZXZ0ak5CeCtCd1I2QStyU1JOQWZ0dExacDlvcUlCbXBN?= =?utf-8?B?K1d2bTMxZjFaamZqNmp2YlVrc1k0NEtvU21jN2dIZkd2d3hJY2twbllrSW5Z?= =?utf-8?B?ZGJoRlQ3anBHMWMyMWw2M0RFRDVrNjExZmRURFRPcXgwNWxlVjM5T3IwM2wy?= =?utf-8?B?ZUprNHp3NWJGbTk5ZEprdVFiOTFJby9MbFJkb0Z3c3RONkYrbW45NFZsWGZN?= =?utf-8?B?MjUwYjlJNWtwaFRjTWdEUVZKZ2s0aHJ6ZTBhWEVsRzVBaGxBQ3kvYVViZmhw?= =?utf-8?B?ZlVjblJRdGRxV2l2SjNmOFhiZ1lsNXk2a1VUMlFHWUNhQkZhWjRHaGVxSHFo?= =?utf-8?B?c0hDbGxXbHAwdE1xaWV4QlNObG8rNkp3RWs5U2xESG1JZ2hKRmNWKzl6ZDho?= =?utf-8?B?bDVsT3FJRTErRWMzZDdaenYyUVpDT2l5YlE1ekptckpPQkFoMnNtS0gyZGUv?= =?utf-8?B?c2xMYmEyb29RUGU2NmcrWWNtanFmMnVCUEVjekV3WTI4cDFJVnFZOGVGWlIr?= =?utf-8?B?L3Y1YWtQeWp5Y3VLRVg0SG1JOGZQdjVHSTdueXIrQ3JmZkdOQ1JrREF6UWRi?= =?utf-8?B?bThiczE4MzQrZ054SFpQTkdseUdvYmlWdTBkV3IvZ0FSaGJQTDlrekdOVllB?= =?utf-8?B?V3o4dEZKMnBFdjRHZkNPRG4zWGFCbFpKc0I1Y2VVTjdkYlB4SHJIdWxuSFZr?= =?utf-8?B?OG1jNFFCTFUycWp2UzRvN3pwZjJTZXhob1FlS1I4SzIzY3VrMDhkSkdyTmlr?= =?utf-8?B?OGNtZTNmc0xEV0VaMmFBK2pWdFZHaGpoOHNuTnM1TDlPNVZQaHZRQVl5SEJL?= =?utf-8?B?elUvMGhxN2g4ZkZVSW14SU1UcTdNL1laMlQ1RFRZV0k1UDMwSXJ6ejZMYVd6?= =?utf-8?B?ZW1EWjZvMFg0d0txMlZhbjIzVE8wdHhsMnFtM0RFRmhwUFNidDh2YVM2S0ZL?= =?utf-8?B?Zzd2bytFa0lrQmNpWnhCMFFFQkdyaHR5S1ZtbzV4QWV6bVhEclZ2a1RXQzh2?= =?utf-8?B?Ym1Tblp5OFhTaktsd0dHdkMycGVzSURSRXI3VnBva3NsY0RmRUk5OEdRK2dV?= =?utf-8?B?TXM1U1B1VkluWStEYlNQZGxvTG9yZWF5RTluVlNPYlRNaUxVTkYwcnM3b3pJ?= =?utf-8?B?WTJSUUlNN2RMUzRSUjlmaUNUMzJWck5ZbGJhbGNWZ3hNdDJnSDdQN2tLbVh3?= =?utf-8?B?VWxaaUgwOVRzb0RneUx5VW51WVVPM1F0eW53NnUxL1M0aFlmMVhjelRsclMx?= =?utf-8?B?UzE5L01uNEFCUnMzZ2JBQXVGeSs3N2R2SFl2VnRMV0ZPREMzcHJoUHdXWTQx?= =?utf-8?B?K2NPQm5MZURlUDJBWk9JRmVQNSthM2E1VHZoTGpWWmdKRmhsMkFRbjVSQkdz?= =?utf-8?B?ajJNTm5ZWk41UHB6NWFuU2Y4MHhhdUFYMjlPemtxTUhaRC8rMGQ5cUpUWkRp?= =?utf-8?B?VXVGMGIwT0VXYm1sRVJBckh4c1JUNVVHOUNXWmwvcUdOQ3pXSG10aktqMFhY?= =?utf-8?B?SGlpcG9vU1RBSzNkWHY3Y3R2Z1BFUzYvV2hiVVRsV2VVSDZ5YUtQdFRnT0Mr?= =?utf-8?B?dEJEZHphMG1vN1lWYTIxWGpJcFdtU0hwcStxaWtqSHB1UFNEYXRPWGlveEdx?= =?utf-8?B?TG94RHdiQ1gwWFA0OWQ3d3dWS0JHRHJ2YnBJRkFPWE5ZZndoZzYvY0x1c1ho?= =?utf-8?B?b0taQjRLSWVUNWU0NDRDVVNXZktONWZ1K08rZ3RpZkxnVlVzM2dDRjVZbzBu?= =?utf-8?B?amlrSk1kK08zSEhjbitxZXNxNUs2U0RYMDhMNEVHYWNVa2ZOTlF1VzNCS3NG?= =?utf-8?B?UnJwRzM3MTRBT2h2cGN0M2ZkZEZIZ3FPNFFyaE12RlZpS1JrMEJCNW1jWExk?= =?utf-8?B?Q3Q3YXpSMUl6U0FGTTlKcXhyOWFlSytzRlBnNnorQXcwcmhMZEwwRk9pRkJp?= =?utf-8?B?TEluMHNLbUZJQjFwblBsQ0p0VGgvTnNZT2Ivbm81RVloZXFVS3l5c2EvYkM5?= =?utf-8?B?THJLSkIzdzVkdkFJT1NUR2hkdTRNVlJ0dUVweVAwaHdrVGpOODJSUENwRHpL?= =?utf-8?B?MlBucjI0UDJJZW1ZNWtsRysvREkzWjVDUVNMa3c5SUxoMnNaOVVmSTF0L1FJ?= =?utf-8?B?SjhVZERiUlplb09XUGlnWU12T09uNWhOQzlrekkzNEp2M2EzdGcxbnF6eGND?= =?utf-8?B?WW0yeUg3UzZ6aGErN0lldWFiQjI5ckczdUtjUXBzMERSQk1rUVM5UVBneGk0?= =?utf-8?Q?Qdg38YOGnNSRNFXA=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7526.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f3d5aad-ed1d-4fa2-d636-08df3f0c91ef X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2026 09:25:33.0121 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FLswC5hCQzZcn3mqsyLmmVORHn7wXzxMdo7dbAm9s783QqhU+liCvH0yecHdGuwhdecUmD8QByRHmR8jFFt0mq019moldi/Bytlo7C8dgi0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7265 X-purgate-ID: tlsNG-c1860d/1794302738-CC77387B-9AD5AFAD/0/0 X-purgate-type: clean X-purgate-size: 7272 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1794302764083158500 MISRA C Rule 10.1 states: "Operands shall not be of an inappropriate essential type". 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). An object or function result of type bool has value 0 or 1 too, and it is promoted to int (C99 6.3.1.2, 6.3.1.1p2). Using that value as an operand of binary +, -, *, <<, >>, <, >, <=3D, >=3D and of +=3D, -=3D, *=3D, <<=3D, >>=3D is well-defined. Division, remainder, unary plus and minus, and the increment operators stay covered by the rule. Update the ECLAIR configuration to tag the accepted uses as safe. Update docs/misra/deviations.rst and rules.rst accordingly. Signed-off-by: Dmytro Prokopchuk --- Test CI pipeline: https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/3048651323 Changes in v2: - use the same operator list in the ECLAIR config, deviations.rst and rules= .rst - extend deviation to: +, -, *, +=3D, -=3D, *=3D, <<, >>, <<=3D, >>=3D, <, = >, <=3D, >=3D - leave the full explanation in deviations.rst, ECLAIR config doc only name= s the operators and points there Link to v1: https://patchew.org/Xen/a536212d9cb18b5c23d06c1c06b9a8ae03941440.1792428626= .git.dmytro._5Fprokopchuk1@epam.com/ --- .../eclair_analysis/ECLAIR/deviations.ecl | 4 ++++ docs/misra/deviations.rst | 20 +++++++++++++++++++ docs/misra/rules.rst | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/= eclair_analysis/ECLAIR/deviations.ecl index 6cdb10a129..1d8f5ab657 100644 --- a/automation/eclair_analysis/ECLAIR/deviations.ecl +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl @@ -335,6 +335,10 @@ still non-negative." -config=3DMC3A2.R10.1,etypes+=3D{safe, "stmt(operator(logical)||node(condi= tional_operator||binary_conditional_operator))", "dst_type(ebool||boolean)"} -doc_end =20 +-doc_begin=3D"A 0-or-1 Boolean operand of binary +, -, *, <<, >>, <, >, <= =3D, >=3D and of +=3D, -=3D, *=3D, <<=3D, >>=3D is safe. See docs/misra/dev= iations.rst for the full explanation." +-config=3DMC3A2.R10.1,etypes+=3D{safe, "stmt(operator(add||sub||add_assign= ||sub_assign||mul||mul_assign||shl||shr||shl_assign||shr_assign||lt||gt||le= ||ge))", "src_type(ebool||boolean)"} +-doc_end + -doc_begin=3D"The macro ISOLATE_LSB encapsulates a well-known pattern to o= btain a mask where only the lowest bit set in the argument is set, if any, for u= nsigned integers arguments on two's complement architectures diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst index 6bcc2adf95..eb2f393ec5 100644 --- a/docs/misra/deviations.rst +++ b/docs/misra/deviations.rst @@ -347,6 +347,26 @@ Deviations related to MISRA C:2012 Rules: well-known to all Xen developers to be a comparison with 0. - Tagged as `safe` for ECLAIR. =20 + * - R10.1 + - The result of relational, equality and logical negation operators h= as + type int and value 0 or 1 (C99 6.5.8p6, 6.5.9p3, 6.5.3.3p5). An obj= ect + or function result of type bool has value 0 or 1 too, and it is + promoted to int (C99 6.3.1.2, 6.3.1.1p2). Such a value is a + well-defined operand of the following operators. These are the oper= ators + for which that 0-or-1 operand has a clear meaning. Binary + and - + (and +=3D and -=3D) count something if the condition holds. \* (and= \*=3D) + yields the other operand if the condition holds and 0 otherwise. + << and >> (and <<=3D and >>=3D) extend that selection to a shift: a= Boolean + left operand contributes 0 or 1, and a Boolean right operand is a s= hift + count of 0 or 1. The operators <, >, <=3D and >=3D compare the same= 0-or-1 + value, so false compares less than true. / and % (and /=3D and %=3D= ) are + excluded. A Boolean divisor is 0 when the condition is false, and + division or remainder by zero is undefined behavior (C99 6.5.5p5). + Unary plus, unary minus, increment and decrement are excluded too: + unary minus yields 0 or -1, and none of these is one of the meanings + above, so the rule still applies to them. + - Tagged as `safe` for ECLAIR. + * - R10.1 - Xen only supports architectures where signed integers are represent= end using two's complement and all the Xen developers are aware of this= . For diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst index a59cf1782e..a7245be8c6 100644 --- a/docs/misra/rules.rst +++ b/docs/misra/rules.rst @@ -387,6 +387,10 @@ maintainers if you want to suggest a change. compilers' extensions) - Implicit conversions to boolean for conditionals (?: if while for) and logical operators (! || &&) + - Operands of essentially Boolean type (results of relational, + equality and logical negation operators, objects and function + results of type bool) used only with binary +, -, \*, <<, >>, + <, >, <=3D, >=3D, +=3D, -=3D, \*=3D, <<=3D and >>=3D - The essential type model allows the constants defined by anonym= ous enums (e.g., enum { A, B, C }) to be used as operands to arithm= etic operators, as they have a signed essential type. --=20 2.43.0