[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/6] qemu-io-cmds: Silent GCC9 format-overflow warning
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH 6/6] qemu-io-cmds: Silent GCC9 format-overflow warning |
Date: |
Wed, 18 Dec 2019 18:45:34 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 |
On 12/18/19 5:15 AM, Richard Henderson wrote:
On 12/17/19 7:34 AM, Philippe Mathieu-Daudé wrote:
GCC9 is confused when building with CFLAG -O3:
In function ‘help_oneline’,
inlined from ‘help_all’ at qemu-io-cmds.c:2414:9,
inlined from ‘help_f’ at qemu-io-cmds.c:2424:9:
qemu-io-cmds.c:2389:9: error: ‘%s’ directive argument is null
[-Werror=format-overflow=]
2389 | printf("%s ", ct->name);
| ^~~~~~~~~~~~~~~~~~~~~~~
Audit shows this can't happen. Give a hint to GCC adding an
assert() call.
This deserves more investigation. From my glance it appears you are right --
and moreover impossible for gcc to have come to this conclusion. Which begs
the question of how that is.
New entries are added to cmdtab[] in qemuio_add_command() which is
public (also called in qemu-io.c). So you can insert a cmdinfo_t with a
name being NULL. This is why I thought GCC was correct first, and I tried:
-- >8 --
--- a/qemu-io-cmds.c
+++ b/qemu-io-cmds.c
@@ -42,6 +42,7 @@ void qemuio_add_command(const cmdinfo_t *ci)
* Catch it now rather than letting it manifest as a crash if a
* particular set of command line options are used.
*/
+ assert(ci->name);
assert(ci->perm == 0 ||
(ci->flags & (CMD_FLAG_GLOBAL | CMD_NOFILE_OK)) == 0);
cmdtab = g_renew(cmdinfo_t, cmdtab, ++ncmds);
---
But this didn't fix the warning... So I moved the assert() in the other
location.
Did you file a gcc bug report?
No because I'm not sure this is a bug, but if you confirm I'll file one :)
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
Cc: Kevin Wolf <address@hidden>
Cc: Max Reitz <address@hidden>
Cc: address@hidden
---
qemu-io-cmds.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
index 1b7e700020..9e956a5dd4 100644
--- a/qemu-io-cmds.c
+++ b/qemu-io-cmds.c
@@ -2411,6 +2411,7 @@ static void help_all(void)
const cmdinfo_t *ct;
for (ct = cmdtab; ct < &cmdtab[ncmds]; ct++) {
+ assert(ct->name);
help_oneline(ct->name, ct);
}
printf("\nUse 'help commandname' for extended help.\n");
- Re: [PATCH 3/6] hw/net/imx_fec: Rewrite fall through comments, (continued)
[PATCH 6/6] qemu-io-cmds: Silent GCC9 format-overflow warning, Philippe Mathieu-Daudé, 2019/12/17