mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Kees Cook <keescook@chromium.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	Luc Van Oostenryck <luc.vanoostenryck@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] build_bug.h: add wrapper for _Static_assert
Date: Mon, 4 Feb 2019 15:12:09 -0800	[thread overview]
Message-ID: <20190204151209.d6fae2c6466cb5c9c5814fd9@linux-foundation.org> (raw)
In-Reply-To: <20190204150916.f29d782b27f096e6c4c6d6cf@linux-foundation.org>

On Mon, 4 Feb 2019 15:09:16 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:

> On Sun,  3 Feb 2019 20:24:00 +0100 Rasmus Villemoes <linux@rasmusvillemoes.dk> wrote:
> 
> > BUILD_BUG_ON() is a little annoying, since it cannot be used outside
> > function scope. So one cannot put assertions about the sizeof() a
> > struct next to the struct definition, but has to hide that in some
> > more or less arbitrary function.
> > 
> > Since gcc 4.6 (which is now also the required minimum), there is
> > support for the C11 _Static_assert in all C modes, including gnu89. So
> > add a simple wrapper for that.
> > 
> > _Static_assert() requires a message argument, which is usually quite
> > redundant (and I believe that bug got fixed at least in newer C++
> > standards), but we can easily work around that with a little macro
> > magic, making it optional.
> > 
> > For example, adding
> > 
> >   static_assert(sizeof(struct printf_spec) == 8);
> > 
> > in vsprintf.c and modifying that struct to violate it, one gets
> > 
> > ./include/linux/build_bug.h:78:41: error: static assertion failed: "sizeof(struct printf_spec) == 8"
> >  #define __static_assert(expr, msg, ...) _Static_assert(expr, "" msg "")
> > 
> > godbolt.org suggests that _Static_assert() has been support by clang
> > since at least 3.0.0.
> > 
> 
> It would be (very) nice to actually use this macro in a few places so
> it gets its build testing while in -next.

ie, just about every BUILD_BUG_ON in mm/ could use this.  Let's switch
a few?


  reply	other threads:[~2019-02-04 23:12 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-03 19:24 Rasmus Villemoes
2019-02-04 23:09 ` Andrew Morton
2019-02-04 23:12   ` Andrew Morton [this message]
2019-02-05  9:53     ` Rasmus Villemoes
2019-02-05 20:27       ` Luc Van Oostenryck
2019-02-05  8:05 ` Masahiro Yamada
2019-02-05  9:38   ` Rasmus Villemoes
2019-02-05 14:06     ` Masahiro Yamada
2019-02-07  0:14     ` Nick Desaulniers
2019-02-08 20:30 ` [PATCH v2 1/3] " Rasmus Villemoes
2019-02-08 20:30   ` [PATCH v2 2/3] lib/vsprintf.c: move sizeof(struct printf_spec) next to its definition Rasmus Villemoes
2019-02-08 20:30   ` [PATCH v2 3/3] linux/fs.h: move member alignment check next to definition of struct filename Rasmus Villemoes

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=20190204151209.d6fae2c6466cb5c9c5814fd9@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=luc.vanoostenryck@gmail.com \
    --cc=ndesaulniers@google.com \
    --cc=yamada.masahiro@socionext.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®