From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1jGnkc-00066o-Pq for mharc-grub-devel@gnu.org; Tue, 24 Mar 2020 13:54:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60472) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGnkZ-00065D-Ls for grub-devel@gnu.org; Tue, 24 Mar 2020 13:54:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGnkY-0003O5-K8 for grub-devel@gnu.org; Tue, 24 Mar 2020 13:54:03 -0400 Received: from mout.gmx.net ([212.227.17.20]:53741) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGnkY-0003NT-7c for grub-devel@gnu.org; Tue, 24 Mar 2020 13:54:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1585072432; bh=6juRHkAlZgANHW6zUvASvbpUdo9Ik+vuVdLFkqBS0vc=; h=X-UI-Sender-Class:Date:From:To:Subject:Cc:References:In-Reply-To; b=kn00cmOtxtFWO4XsKo+dVVwrEEckoZCXqpYjeFLRjLSWaXzcEzMDe3sd2R/of4aQW UAX63TtznRlAd+WWVHbbVwbzktrGtTplExze5kWd2hjq1xanjVdV7C3FxYKlwgv65w ju8DMBZmwK3OZqJmds6YDmfZ39nTD2MkD5373I7I= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from scdbackup.webframe.org ([91.8.163.58]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MFKGP-1j1ie12Vuz-00FjFT; Tue, 24 Mar 2020 18:53:52 +0100 Date: Tue, 24 Mar 2020 18:54:43 +0100 From: "Thomas Schmitt" To: grub-devel@gnu.org Subject: Re: disk/mdraid1x_linux.c:181:15: warning: array subscript ... Content-Type: text/plain; charset="utf-8" Cc: pmenzel@molgen.mpg.de References: In-Reply-To: Message-Id: <9634719282783168194@scdbackup.webframe.org> X-Provags-ID: V03:K1:+b+upgKIDQoeOlMYeBGKUOGeFVwCRbZ6rwNl4l7z4xByLrI7OIR 477W4iyMhC/cXTexvHWcBXXZZtUdwN12pt/YPIo/UEUlpfZ+dPixb/1/ebTG/ihE4O7SBx/ JXF41MUvWUe5ni/6YZ5zxEs3y/iFXFCDyyfyetmk0qq0WzlcUd+6nef9z9oOGSkiiNY018H 75FPteO1PuvW0Rz0OjO3g== X-UI-Out-Filterresults: notjunk:1;V03:K0:SDUEND5XkCA=:vCaBLDpuRjXmPvNR2GCTDu h9TnnDU+bsko8MHE+sdo9epxOspkGS1iBMt6hAOcekbi4bIpsQ0fFkvyv+g6RUFVxtyLp81bN c9lKDqvINY35WBtCd3MCgX2VSP848Lu61SCJyfSRP/HY8aYpnbTw2FH5EORSJKWj85VQ++zfy BINI0jIGepPQgEs0Yz5TEgLQ3KJMa16l+lvHolrkrSCrXlGVrJ5uevYKt+a8qaon4hokfKq1O aYK02BLEa252CLBJAnhnY2gdcsj2NGeXus1x4RMf+1eB0BH+yO8ZDcXbli6go/T2XbWP41CQL jSMfxNXRxDpj0ilgVR+AMVthQKbjfDb4M4z7BfB3+PqkWsuTQsVy+ZKtw+ARGow1hkMKNhs9F 4JsHQWYwYpLks2dx1fxPN5GApQnH936wZe13T4uKMDhnEk2FST5tKqcQw/ea2cWrFEiNASFjq tUp/223FaFTFXQp3uqX3Uuk0LuCCW0aNZeb6t+hvGtKgk+uGVE6gwQcPkeUxfrhYUoqH7atJt KrKHZ8Cp4325Oybs3oTUch16UVigREc7oZs2h4sMRqw+Wt5lwOuGS5DJo5sasx3SFsYW8hh9F 7vshLk4Gcn7PVi6seu4oVP1DCpgBlUUlyxB0e+7+nejQ1VFfd8zTfewd/ytaVyaIrylW5YWae xvlj7+5JcGjhVn1D0yuDeptDoOEVEqeFAoApE1bOZpXHr/CLHDGAZZTTeodkXox0j8k1blISu zclT6nSnhGjPRrMzlryxGXpAQ3JcY3a8fFcm7BG3R0xZwno/Dz4kIKifLSZJicmCQPMDLhtXv z8J1SpNGsjoeuM+LaGPWuRQlOQH19700/SY6DQuZVVTgkCPgXWH3U+KHzzI2+kokRLkjYJ6P5 RC39VTv+hOpeDRGetW1WtuUOAjNDZNqL8txExq4M+mvC30yJY5cpO5v7CTPt6TmlrmrP6pIrC nvJcmhJ/Ei398ygx++xuOE/ENtQQSe5HfxjRU/Qi/tlT/KvjDdDeCK83lYKQEzJvsUARTHFo7 q30C3Xe1u1Bc1Z6qWt5+baozhuX0gG5dMvNK1qrI2AEbsxR8wB1wZShJhZ2R6sttzbiaRADY0 7tMmhKmkXGKSyVEBKXq2kuYuauTcw6rk+ZWmpMFjqXG+ftZnj75U7dkvS1v+6TUDbSC3SakAB teNPI9AtTWF959L5WZT0W9yeI/8/VsgIT8oreihgt/6JH1WJA0v2WGt2pjqpG9A4MwvEo36uJ rQiw6ANzwJR8EzOAO X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.20 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Mar 2020 17:54:04 -0000 Hi, i wrote: > > (char *) &sb.dev_roles - (char *) sb > > + grub_le_to_cpu32 (sb.dev_number) * sizeof(grub_uint16_t) PGNet Dev wrote: > grub-core/disk/mdraid1x_linux.c:183:6: error: cannot convert to a > pointer type My fault. I forgot the "&" before "sb". (char *) &sb.dev_roles - (char *) &sb I invested time in examining the C riddle, not in testing my proposal by at least some dummy. Now this compiles for me without complaint by gcc -Wall struct { char a_array[10]; uint16_t dev_roles[0]; } sb; printf("%u\n", (unsigned int) (((char *) &sb.dev_roles - (char *) &sb) + 2 * sizeof(uint16_t))); Running this program yields 14 as result. The same as with the equivalent of the old expression printf("%u\n", (unsigned int) ((char *) &sb.dev_roles[2] - (char *) &sb)); > not sure I'm reading your intent from your post, My observation is that not "dev_roles[0]" is to blame for the warning, but rather the computation which involves taking the address of an array element while not a single one is allocated. The resulting number is used as offset in a file, not in the sparsely allocated "struct grub_raid_super_1x sb". My proposal is to avoid "[...]" in the course of the computation. This should be valid for both ways to express an open ended struct: "dev_roles[0]" and "dev_roles[]". Have a nice day :) Thomas