From: Samuel Thibault <samuel.thibault@gnu.org>
To: qemu-devel@nongnu.org
Cc: stefanha@redhat.com, jan.kiszka@siemens.com,
marcandre.lureau@redhat.com, zhangckid@gmail.com,
lizhijian@cn.fujitsu.com, pbonzini@redhat.com,
jasowang@redhat.com
Subject: Re: [Qemu-devel] [PATCH] slirp: Replace QEMU_BUILD_BUG_ON with own macro
Date: Sun, 27 Jan 2019 02:55:09 +0100 [thread overview]
Message-ID: <20190127015509.ngofhbiduuwwbf7r@function> (raw)
In-Reply-To: <20190127015113.1599-1-samuel.thibault@ens-lyon.org>
(Which I'll fold as appropriate within Marc-André's patch series)
Samuel Thibault, le dim. 27 janv. 2019 02:51:13 +0100, a ecrit:
> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> ---
> slirp/ip.h | 6 ++++--
> slirp/ip6.h | 6 ++++--
> slirp/ip6_icmp.h | 12 +++++++-----
> slirp/util.h | 25 +++++++++++++++++++++++++
> 4 files changed, 40 insertions(+), 9 deletions(-)
>
> diff --git a/slirp/ip.h b/slirp/ip.h
> index 2baeeb9a3a..77182e61a9 100644
> --- a/slirp/ip.h
> +++ b/slirp/ip.h
> @@ -35,6 +35,8 @@
>
> #include <glib.h>
>
> +#include "util.h"
> +
> #if G_BYTE_ORDER == G_BIG_ENDIAN
> # undef NTOHL
> # undef NTOHS
> @@ -229,8 +231,8 @@ struct ipasfrag {
> struct ip ipf_ip;
> };
>
> -QEMU_BUILD_BUG_ON(offsetof(struct ipq, frag_link) !=
> - offsetof(struct ipasfrag, ipf_link));
> +SLIRP_BUILD_BUG_ON(offsetof(struct ipq, frag_link) !=
> + offsetof(struct ipasfrag, ipf_link));
>
> #define ipf_off ipf_ip.ip_off
> #define ipf_tos ipf_ip.ip_tos
> diff --git a/slirp/ip6.h b/slirp/ip6.h
> index 4e7c366505..3db099acef 100644
> --- a/slirp/ip6.h
> +++ b/slirp/ip6.h
> @@ -8,6 +8,8 @@
>
> #include <glib.h>
>
> +#include "util.h"
> +
> #define ALLNODES_MULTICAST { .s6_addr = \
> { 0xff, 0x02, 0x00, 0x00,\
> 0x00, 0x00, 0x00, 0x00,\
> @@ -152,7 +154,7 @@ struct ip6_pseudohdr {
> * If we marked the struct as packed then we would be unable to take
> * the address of any of the fields in it.
> */
> -QEMU_BUILD_BUG_ON(sizeof(struct ip6) != 40);
> -QEMU_BUILD_BUG_ON(sizeof(struct ip6_pseudohdr) != 40);
> +SLIRP_BUILD_BUG_ON(sizeof(struct ip6) != 40);
> +SLIRP_BUILD_BUG_ON(sizeof(struct ip6_pseudohdr) != 40);
>
> #endif
> diff --git a/slirp/ip6_icmp.h b/slirp/ip6_icmp.h
> index 3f44ed2f49..ea7fcfe5e6 100644
> --- a/slirp/ip6_icmp.h
> +++ b/slirp/ip6_icmp.h
> @@ -6,6 +6,8 @@
> #ifndef SLIRP_IP6_ICMP_H
> #define SLIRP_IP6_ICMP_H
>
> +#include "util.h"
> +
> /*
> * Interface Control Message Protocol version 6 Definitions.
> * Per RFC 4443, March 2006.
> @@ -50,14 +52,14 @@ struct ndp_ra { /* Router Advertisement Message */
> uint32_t retrans_time; /* Retrans Timer */
> };
>
> -QEMU_BUILD_BUG_ON(sizeof(struct ndp_ra) != 12);
> +SLIRP_BUILD_BUG_ON(sizeof(struct ndp_ra) != 12);
>
> struct ndp_ns { /* Neighbor Solicitation Message */
> uint32_t reserved;
> struct in6_addr target; /* Target Address */
> };
>
> -QEMU_BUILD_BUG_ON(sizeof(struct ndp_ns) != 20);
> +SLIRP_BUILD_BUG_ON(sizeof(struct ndp_ns) != 20);
>
> struct ndp_na { /* Neighbor Advertisement Message */
> #if G_BYTE_ORDER == G_BIG_ENDIAN
> @@ -78,7 +80,7 @@ struct ndp_na { /* Neighbor Advertisement Message */
> struct in6_addr target; /* Target Address */
> };
>
> -QEMU_BUILD_BUG_ON(sizeof(struct ndp_na) != 20);
> +SLIRP_BUILD_BUG_ON(sizeof(struct ndp_na) != 20);
>
> struct ndp_redirect {
> uint32_t reserved;
> @@ -86,7 +88,7 @@ struct ndp_redirect {
> struct in6_addr dest; /* Destination Address */
> };
>
> -QEMU_BUILD_BUG_ON(sizeof(struct ndp_redirect) != 36);
> +SLIRP_BUILD_BUG_ON(sizeof(struct ndp_redirect) != 36);
>
> /*
> * Structure of an icmpv6 header.
> @@ -113,7 +115,7 @@ struct icmp6 {
> #define icmp6_redirect icmp6_body.ndp_redirect
> };
>
> -QEMU_BUILD_BUG_ON(sizeof(struct icmp6) != 40);
> +SLIRP_BUILD_BUG_ON(sizeof(struct icmp6) != 40);
>
> #define ICMP6_MINLEN 4
> #define ICMP6_ERROR_MINLEN 8
> diff --git a/slirp/util.h b/slirp/util.h
> index ef75804560..fc2c2e58fe 100644
> --- a/slirp/util.h
> +++ b/slirp/util.h
> @@ -48,6 +48,31 @@
> # define SLIRP_PACKED __attribute__((packed))
> #endif
>
> +#ifndef glue
> +#define xglue(x, y) x ## y
> +#define glue(x, y) xglue(x, y)
> +#endif
> +
> +#define SLIRP_BUILD_BUG_ON_STRUCT(x) \
> + struct { \
> + int:(x) ? -1 : 1; \
> + }
> +
> +/* SLIRP_BUILD_BUG_MSG() emits the message given if _Static_assert is
> + * supported; otherwise, it will be omitted from the compiler error
> + * message (but as it remains present in the source code, it can still
> + * be useful when debugging). */
> +#if defined(CONFIG_STATIC_ASSERT)
> +#define SLIRP_BUILD_BUG_MSG(x, msg) _Static_assert(!(x), msg)
> +#elif defined(__COUNTER__)
> +#define SLIRP_BUILD_BUG_MSG(x, msg) typedef SLIRP_BUILD_BUG_ON_STRUCT(x) \
> + glue(qemu_build_bug_on__, __COUNTER__) __attribute__((unused))
> +#else
> +#define SLIRP_BUILD_BUG_MSG(x, msg)
> +#endif
> +
> +#define SLIRP_BUILD_BUG_ON(x) SLIRP_BUILD_BUG_MSG(x, "not expecting: " #x)
> +
> #define SCALE_MS 1000000
>
> #define ETH_ALEN 6
> --
> 2.20.1
>
--
Samuel
Hi ! I'm a .signature virus ! Copy me into your ~/.signature, please !
next prev parent reply other threads:[~2019-01-27 1:55 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-27 1:51 [Qemu-devel] [PATCH] slirp: Replace QEMU_BUILD_BUG_ON with own macro Samuel Thibault
2019-01-27 1:55 ` Samuel Thibault [this message]
2019-01-27 11:37 ` Marc-André Lureau
2019-01-27 11:47 ` Samuel Thibault
2019-01-28 11:18 ` Philippe Mathieu-Daudé
2019-01-28 11:25 ` Peter Maydell
2019-01-28 11:35 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190127015509.ngofhbiduuwwbf7r@function \
--to=samuel.thibault@gnu.org \
--cc=jan.kiszka@siemens.com \
--cc=jasowang@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=zhangckid@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.