Latest GCC may complain in that way: commands/i386/pc/sendkey.c: In function ‘grub_sendkey_postboot’: commands/i386/pc/sendkey.c:223:21: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 223 | *((char *) 0x41a) = 0x1e; | ~~~~~~~~~~~~~~~~~~^~~~~~
The volatile keyword addition helps and additionally assures us the compiler will not optimize out fixed assignments. Signed-off-by: Daniel Kiper <daniel.ki...@oracle.com> --- grub-core/commands/i386/pc/sendkey.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/grub-core/commands/i386/pc/sendkey.c b/grub-core/commands/i386/pc/sendkey.c index 26d9acd3d..ab4bca9e9 100644 --- a/grub-core/commands/i386/pc/sendkey.c +++ b/grub-core/commands/i386/pc/sendkey.c @@ -220,8 +220,8 @@ grub_sendkey_postboot (void) *flags = oldflags; - *((char *) 0x41a) = 0x1e; - *((char *) 0x41c) = 0x1e; + *((volatile char *) 0x41a) = 0x1e; + *((volatile char *) 0x41c) = 0x1e; return GRUB_ERR_NONE; } @@ -236,8 +236,8 @@ grub_sendkey_preboot (int noret __attribute__ ((unused))) oldflags = *flags; /* Set the sendkey. */ - *((char *) 0x41a) = 0x1e; - *((char *) 0x41c) = keylen + 0x1e; + *((volatile char *) 0x41a) = 0x1e; + *((volatile char *) 0x41c) = keylen + 0x1e; grub_memcpy ((char *) 0x41e, sendkey, 0x20); /* Transform "any ctrl" to "right ctrl" flag. */ -- 2.11.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel