From patchwork Sun Jan 27 01:51:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Thibault X-Patchwork-Id: 10782667 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 066B11390 for ; Sun, 27 Jan 2019 01:57:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E8B332C7F1 for ; Sun, 27 Jan 2019 01:56:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB17F2C99E; Sun, 27 Jan 2019 01:56:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 204512C7F1 for ; Sun, 27 Jan 2019 01:56:59 +0000 (UTC) Received: from localhost ([127.0.0.1]:38172 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gnZgw-0004HT-EO for patchwork-qemu-devel@patchwork.kernel.org; Sat, 26 Jan 2019 20:56:58 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49630) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gnZfq-0003KZ-5A for qemu-devel@nongnu.org; Sat, 26 Jan 2019 20:55:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gnZbW-00023w-Fx for qemu-devel@nongnu.org; Sat, 26 Jan 2019 20:51:24 -0500 Received: from hera.aquilenet.fr ([185.233.100.1]:39332) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gnZbV-00022r-8s for qemu-devel@nongnu.org; Sat, 26 Jan 2019 20:51:22 -0500 Received: from localhost (localhost [127.0.0.1]) by hera.aquilenet.fr (Postfix) with ESMTP id 9C9B578CB; Sun, 27 Jan 2019 02:51:17 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at aquilenet.fr Received: from hera.aquilenet.fr ([127.0.0.1]) by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1NHf211wgkBl; Sun, 27 Jan 2019 02:51:16 +0100 (CET) Received: from function (lfbn-1-11161-124.w86-213.abo.wanadoo.fr [86.213.235.124]) by hera.aquilenet.fr (Postfix) with ESMTPSA id CBB5676A4; Sun, 27 Jan 2019 02:51:16 +0100 (CET) Received: from samy by function with local (Exim 4.92-RC4) (envelope-from ) id 1gnZbQ-0000SQ-14; Sun, 27 Jan 2019 02:51:16 +0100 From: Samuel Thibault To: qemu-devel@nongnu.org Date: Sun, 27 Jan 2019 02:51:13 +0100 Message-Id: <20190127015113.1599-1-samuel.thibault@ens-lyon.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 185.233.100.1 Subject: [Qemu-devel] [PATCH] slirp: Replace QEMU_BUILD_BUG_ON with own macro X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lizhijian@cn.fujitsu.com, jan.kiszka@siemens.com, jasowang@redhat.com, marcandre.lureau@redhat.com, pbonzini@redhat.com, stefanha@redhat.com, zhangckid@gmail.com, Samuel Thibault Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Samuel Thibault --- 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 +#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 +#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