[meta-virtualization] [m-c-s][PATCH] spice: fix builds with gcc 7.x

Bruce Ashfield bruce.ashfield at gmail.com
Thu Aug 24 06:59:12 PDT 2017


merged.

Bruce

On Wed, Aug 23, 2017 at 2:08 PM, Mark Asselstine <
mark.asselstine at windriver.com> wrote:

> There is an upstream fix for this issue but it doesn't apply cleanly
> and is rather simple so rather than backport it and turn it into
> something unrecognizeable I simply created my own version of it. This
> fixes builds which fail with:
>
> | ../../git/server/reds.c: In function 'vdi_port_read_one_msg_from_
> device':
> | ../../git/server/reds.c:797:31: error: this statement may fall through
> [-Werror=implicit-fallthrough=]
> |              state->read_state = VDI_PORT_READ_STATE_GET_BUFF;
> |              ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> | ../../git/server/reds.c:798:9: note: here
> |          case VDI_PORT_READ_STATE_GET_BUFF: {
> |          ^~~~
>
> Signed-off-by: Mark Asselstine <mark.asselstine at windriver.com>
> ---
>  .../spice/files/Fix-build-issues-with-gcc-7.patch  | 59
> ++++++++++++++++++++++
>  recipes-support/spice/spice_git.bb                 |  1 +
>  2 files changed, 60 insertions(+)
>  create mode 100644 recipes-support/spice/files/
> Fix-build-issues-with-gcc-7.patch
>
> diff --git a/recipes-support/spice/files/Fix-build-issues-with-gcc-7.patch
> b/recipes-support/spice/files/Fix-build-issues-with-gcc-7.patch
> new file mode 100644
> index 0000000..7fcafdc
> --- /dev/null
> +++ b/recipes-support/spice/files/Fix-build-issues-with-gcc-7.patch
> @@ -0,0 +1,59 @@
> +From 9f001b6818ac4baa1df010ccf4200ca56bfb11b2 Mon Sep 17 00:00:00 2001
> +From: Mark Asselstine <mark.asselstine at windriver.com>
> +Date: Wed, 23 Aug 2017 13:47:29 -0400
> +Subject: [PATCH] Fix build issues with gcc 7
> +
> +gcc 7 checks for when a switch statement doesn't break between
> +cases. When a break is not found you will see
> +
> +| ../../git/server/reds.c: In function 'vdi_port_read_one_msg_from_
> device':
> +| ../../git/server/reds.c:797:31: error: this statement may fall through
> [-Werror=implicit-fallthrough=]
> +|              state->read_state = VDI_PORT_READ_STATE_GET_BUFF;
> +|              ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +| ../../git/server/reds.c:798:9: note: here
> +|          case VDI_PORT_READ_STATE_GET_BUFF: {
> +|          ^~~~
> +
> +The 'fallthrough' comment will let gcc know this is done on purpose.
> +
> +Signed-off-by: Mark Asselstine <mark.asselstine at windriver.com>
> +---
> + server/inputs_channel.c | 1 +
> + server/reds.c           | 2 ++
> + 2 files changed, 3 insertions(+)
> +
> +diff --git a/server/inputs_channel.c b/server/inputs_channel.c
> +index 931dac1..534ab66 100644
> +--- a/server/inputs_channel.c
> ++++ b/server/inputs_channel.c
> +@@ -321,6 +321,7 @@ static int inputs_channel_handle_parsed(RedChannelClient
> *rcc, uint32_t size, ui
> +             activate_modifiers_watch();
> +         }
> +     }
> ++        /* fallthrough */
> +     case SPICE_MSGC_INPUTS_KEY_UP: {
> +         SpiceMsgcKeyDown *key_down = (SpiceMsgcKeyDown *)buf;
> +         for (i = 0; i < 4; i++) {
> +diff --git a/server/reds.c b/server/reds.c
> +index 30d0652..8c80eb6 100644
> +--- a/server/reds.c
> ++++ b/server/reds.c
> +@@ -795,6 +795,7 @@ static SpiceCharDeviceMsgToClient
> *vdi_port_read_one_msg_from_device(SpiceCharDe
> +             }
> +             state->message_recive_len = state->vdi_chunk_header.size;
> +             state->read_state = VDI_PORT_READ_STATE_GET_BUFF;
> ++            /* fallthrough */
> +         case VDI_PORT_READ_STATE_GET_BUFF: {
> +             if (!(state->current_read_buf = vdi_port_read_buf_get())) {
> +                 return NULL;
> +@@ -806,6 +807,7 @@ static SpiceCharDeviceMsgToClient
> *vdi_port_read_one_msg_from_device(SpiceCharDe
> +             state->message_recive_len -= state->recive_len;
> +             state->read_state = VDI_PORT_READ_STATE_READ_DATA;
> +         }
> ++            /* fallthrough */
> +         case VDI_PORT_READ_STATE_READ_DATA:
> +             n = sif->read(vdagent, state->recive_pos, state->recive_len);
> +             if (!n) {
> +--
> +2.7.4
> +
> diff --git a/recipes-support/spice/spice_git.bb b/recipes-support/spice/
> spice_git.bb
> index cfb75d7..04e7a25 100644
> --- a/recipes-support/spice/spice_git.bb
> +++ b/recipes-support/spice/spice_git.bb
> @@ -37,6 +37,7 @@ SRC_URI += " \
>          file://build-allow-separated-src-and-build-dirs.patch \
>          file://0001-red_parse_qxl-Fix-BITMAP_FMT_IS_RGB-defined-but-not-.patch
> \
>          file://0001-Use-PRI-macros-in-printf-to-keep-compatibility-betwe.patch
> \
> +        file://Fix-build-issues-with-gcc-7.patch \
>          "
>
>  S = "${WORKDIR}/git"
> --
> 2.7.4
>
> --
> _______________________________________________
> meta-virtualization mailing list
> meta-virtualization at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-virtualization
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-virtualization/attachments/20170824/8862788f/attachment-0001.html>


More information about the meta-virtualization mailing list