Message ID | 20231006164508.536406-1-thuth@redhat.com |
---|---|
State | New |
Headers | show |
Series | hw/virtio/virtio-gpu: Fix compiler warning when compiling with -Wshadow | expand |
On Fri, Oct 6, 2023 at 8:46 PM Thomas Huth <thuth@redhat.com> wrote: > > Avoid using trivial variable names in macros, otherwise we get > the following compiler warning when compiling with -Wshadow=local: > > In file included from ../../qemu/hw/display/virtio-gpu-virgl.c:19: > ../../home/thuth/devel/qemu/hw/display/virtio-gpu-virgl.c: > In function ‘virgl_cmd_submit_3d’: > ../../qemu/include/hw/virtio/virtio-gpu.h:228:16: error: declaration of ‘s’ > shadows a previous local [-Werror=shadow=compatible-local] > 228 | size_t s; > | ^ > ../../qemu/hw/display/virtio-gpu-virgl.c:215:5: note: in expansion of macro > ‘VIRTIO_GPU_FILL_CMD’ > 215 | VIRTIO_GPU_FILL_CMD(cs); > | ^~~~~~~~~~~~~~~~~~~ > ../../qemu/hw/display/virtio-gpu-virgl.c:213:12: note: shadowed declaration > is here > 213 | size_t s; > | ^ > cc1: all warnings being treated as errors > > Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > include/hw/virtio/virtio-gpu.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h > index 390c4642b8..8b7e3faf01 100644 > --- a/include/hw/virtio/virtio-gpu.h > +++ b/include/hw/virtio/virtio-gpu.h > @@ -225,13 +225,13 @@ struct VhostUserGPU { > }; > > #define VIRTIO_GPU_FILL_CMD(out) do { \ > - size_t s; \ > - s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ > + size_t s_; \ > + s_ = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ > &out, sizeof(out)); \ > - if (s != sizeof(out)) { \ > + if (s_ != sizeof(out)) { \ > qemu_log_mask(LOG_GUEST_ERROR, \ > "%s: command size incorrect %zu vs %zu\n", \ > - __func__, s, sizeof(out)); \ > + __func__, s_, sizeof(out)); \ > return; \ > } \ > } while (0) > -- > 2.41.0 > >
On Fri, Oct 06, 2023 at 06:45:08PM +0200, Thomas Huth wrote: > Avoid using trivial variable names in macros, otherwise we get > the following compiler warning when compiling with -Wshadow=local: > > In file included from ../../qemu/hw/display/virtio-gpu-virgl.c:19: > ../../home/thuth/devel/qemu/hw/display/virtio-gpu-virgl.c: > In function ‘virgl_cmd_submit_3d’: > ../../qemu/include/hw/virtio/virtio-gpu.h:228:16: error: declaration of ‘s’ > shadows a previous local [-Werror=shadow=compatible-local] > 228 | size_t s; > | ^ > ../../qemu/hw/display/virtio-gpu-virgl.c:215:5: note: in expansion of macro > ‘VIRTIO_GPU_FILL_CMD’ > 215 | VIRTIO_GPU_FILL_CMD(cs); > | ^~~~~~~~~~~~~~~~~~~ > ../../qemu/hw/display/virtio-gpu-virgl.c:213:12: note: shadowed declaration > is here > 213 | size_t s; > | ^ > cc1: all warnings being treated as errors > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > include/hw/virtio/virtio-gpu.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h > index 390c4642b8..8b7e3faf01 100644 > --- a/include/hw/virtio/virtio-gpu.h > +++ b/include/hw/virtio/virtio-gpu.h > @@ -225,13 +225,13 @@ struct VhostUserGPU { > }; > > #define VIRTIO_GPU_FILL_CMD(out) do { \ > - size_t s; \ > - s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ > + size_t s_; \ > + s_ = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ > &out, sizeof(out)); \ > - if (s != sizeof(out)) { \ > + if (s_ != sizeof(out)) { \ > qemu_log_mask(LOG_GUEST_ERROR, \ > "%s: command size incorrect %zu vs %zu\n", \ > - __func__, s, sizeof(out)); \ > + __func__, s_, sizeof(out)); \ > return; \ > } \ > } while (0) This is not really enough I think. Someone might use another macro as parameter to this macro and we'll get a mess. We want something that's specific to this macro. How about VIRTIO_GPU_FILL_CMD_s ? > -- > 2.41.0
On 8/10/23 10:57, Michael S. Tsirkin wrote: > On Fri, Oct 06, 2023 at 06:45:08PM +0200, Thomas Huth wrote: >> Avoid using trivial variable names in macros, otherwise we get >> the following compiler warning when compiling with -Wshadow=local: >> >> In file included from ../../qemu/hw/display/virtio-gpu-virgl.c:19: >> ../../home/thuth/devel/qemu/hw/display/virtio-gpu-virgl.c: >> In function ‘virgl_cmd_submit_3d’: >> ../../qemu/include/hw/virtio/virtio-gpu.h:228:16: error: declaration of ‘s’ >> shadows a previous local [-Werror=shadow=compatible-local] >> 228 | size_t s; >> | ^ >> ../../qemu/hw/display/virtio-gpu-virgl.c:215:5: note: in expansion of macro >> ‘VIRTIO_GPU_FILL_CMD’ >> 215 | VIRTIO_GPU_FILL_CMD(cs); >> | ^~~~~~~~~~~~~~~~~~~ >> ../../qemu/hw/display/virtio-gpu-virgl.c:213:12: note: shadowed declaration >> is here >> 213 | size_t s; >> | ^ >> cc1: all warnings being treated as errors >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> include/hw/virtio/virtio-gpu.h | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h >> index 390c4642b8..8b7e3faf01 100644 >> --- a/include/hw/virtio/virtio-gpu.h >> +++ b/include/hw/virtio/virtio-gpu.h >> @@ -225,13 +225,13 @@ struct VhostUserGPU { >> }; >> >> #define VIRTIO_GPU_FILL_CMD(out) do { \ >> - size_t s; \ >> - s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ >> + size_t s_; \ >> + s_ = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ >> &out, sizeof(out)); \ >> - if (s != sizeof(out)) { \ >> + if (s_ != sizeof(out)) { \ >> qemu_log_mask(LOG_GUEST_ERROR, \ >> "%s: command size incorrect %zu vs %zu\n", \ >> - __func__, s, sizeof(out)); \ >> + __func__, s_, sizeof(out)); \ >> return; \ >> } \ >> } while (0) > > This is not really enough I think. Someone might > use another macro as parameter to this macro and we'll get > a mess. We want something that's specific to this macro. > How about VIRTIO_GPU_FILL_CMD_s ? Or unmacroize as: virtio_gpu_fill_cmd(struct virtio_gpu_ctrl_command *cmd, const void *data, size_t size);
On 08/10/2023 10.57, Michael S. Tsirkin wrote: > On Fri, Oct 06, 2023 at 06:45:08PM +0200, Thomas Huth wrote: >> Avoid using trivial variable names in macros, otherwise we get >> the following compiler warning when compiling with -Wshadow=local: >> >> In file included from ../../qemu/hw/display/virtio-gpu-virgl.c:19: >> ../../home/thuth/devel/qemu/hw/display/virtio-gpu-virgl.c: >> In function ‘virgl_cmd_submit_3d’: >> ../../qemu/include/hw/virtio/virtio-gpu.h:228:16: error: declaration of ‘s’ >> shadows a previous local [-Werror=shadow=compatible-local] >> 228 | size_t s; >> | ^ >> ../../qemu/hw/display/virtio-gpu-virgl.c:215:5: note: in expansion of macro >> ‘VIRTIO_GPU_FILL_CMD’ >> 215 | VIRTIO_GPU_FILL_CMD(cs); >> | ^~~~~~~~~~~~~~~~~~~ >> ../../qemu/hw/display/virtio-gpu-virgl.c:213:12: note: shadowed declaration >> is here >> 213 | size_t s; >> | ^ >> cc1: all warnings being treated as errors >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> include/hw/virtio/virtio-gpu.h | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h >> index 390c4642b8..8b7e3faf01 100644 >> --- a/include/hw/virtio/virtio-gpu.h >> +++ b/include/hw/virtio/virtio-gpu.h >> @@ -225,13 +225,13 @@ struct VhostUserGPU { >> }; >> >> #define VIRTIO_GPU_FILL_CMD(out) do { \ >> - size_t s; \ >> - s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ >> + size_t s_; \ >> + s_ = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ >> &out, sizeof(out)); \ >> - if (s != sizeof(out)) { \ >> + if (s_ != sizeof(out)) { \ >> qemu_log_mask(LOG_GUEST_ERROR, \ >> "%s: command size incorrect %zu vs %zu\n", \ >> - __func__, s, sizeof(out)); \ >> + __func__, s_, sizeof(out)); \ >> return; \ >> } \ >> } while (0) > > This is not really enough I think. Someone might > use another macro as parameter to this macro and we'll get > a mess. We want something that's specific to this macro. > How about VIRTIO_GPU_FILL_CMD_s ? Sure, can do (also for the other patch). Thomas
diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h index 390c4642b8..8b7e3faf01 100644 --- a/include/hw/virtio/virtio-gpu.h +++ b/include/hw/virtio/virtio-gpu.h @@ -225,13 +225,13 @@ struct VhostUserGPU { }; #define VIRTIO_GPU_FILL_CMD(out) do { \ - size_t s; \ - s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ + size_t s_; \ + s_ = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \ &out, sizeof(out)); \ - if (s != sizeof(out)) { \ + if (s_ != sizeof(out)) { \ qemu_log_mask(LOG_GUEST_ERROR, \ "%s: command size incorrect %zu vs %zu\n", \ - __func__, s, sizeof(out)); \ + __func__, s_, sizeof(out)); \ return; \ } \ } while (0)
Avoid using trivial variable names in macros, otherwise we get the following compiler warning when compiling with -Wshadow=local: In file included from ../../qemu/hw/display/virtio-gpu-virgl.c:19: ../../home/thuth/devel/qemu/hw/display/virtio-gpu-virgl.c: In function ‘virgl_cmd_submit_3d’: ../../qemu/include/hw/virtio/virtio-gpu.h:228:16: error: declaration of ‘s’ shadows a previous local [-Werror=shadow=compatible-local] 228 | size_t s; | ^ ../../qemu/hw/display/virtio-gpu-virgl.c:215:5: note: in expansion of macro ‘VIRTIO_GPU_FILL_CMD’ 215 | VIRTIO_GPU_FILL_CMD(cs); | ^~~~~~~~~~~~~~~~~~~ ../../qemu/hw/display/virtio-gpu-virgl.c:213:12: note: shadowed declaration is here 213 | size_t s; | ^ cc1: all warnings being treated as errors Signed-off-by: Thomas Huth <thuth@redhat.com> --- include/hw/virtio/virtio-gpu.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)