From: David Daney <ddaney.cavm@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: David Daney <ddaney.cavm@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
"ralf@linux-mips.org" <ralf@linux-mips.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
David Rientjes <rientjes@google.com>, DM <dm.n9107@gmail.com>,
David Howells <dhowells@redhat.com>,
David Daney <david.daney@cavium.com>,
"Pinski, Andrew" <Andrew.Pinski@caviumnetworks.com>
Subject: Re: [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used.
Date: Wed, 23 Nov 2011 16:37:56 -0800 [thread overview]
Message-ID: <4ECD91E4.5090504@gmail.com> (raw)
In-Reply-To: <CA+55aFwjUVhff6jADOSvAn=t4CTVf4ZODTNm7M6vYcmG6TikPA@mail.gmail.com>
On 11/23/2011 03:57 PM, Linus Torvalds wrote:
> Btw, would it possibly make sense to make the string more useful?
>
> For example using __FILE__ and __LINE__, or possibly letting the user
> of the BUILD_BUG() give a string ("Using HMASK without
> CONFIG_HUGEPAGE").
We thought about doing that, but without doing some complex preprocessor
fu, the GCC attribute ((error())) thing doesn't do what we want.
It appears that if more than a single instance of the construct is used
in a compilation unit, the string emitted by the compiler for any of the
violations will be the last string encountered.
So if you did something like:
.
.
.
Line 99: BUILD_BUG("You failed on line 99");
.
.
.
.
Line 666: BUILD_BUG("You failed on line 666");
.
.
.
The message emitted for a failure at line 99 would be "You failed on
line 666". Which is probably worse than no message at all.
It may be possible to do something like:
#define _LINENAME_CONCAT( _name_, _line_ ) _name_##_line_
#define _LINENAME(_name_, _line_) _LINENAME_CONCAT(_name_,_line_)
#define _BUILD_BUG(MSG,FUBAR) \
do { \
extern void FUBAR (void) \
__linktime_error("BUILD_BUG failed: " MSG); \
FUBAR (); \
} while (0)
#define BUILD_BUG(M,A) _BUILD_BUG(M, _LINENAME(__build_bug_failed,__LINE__))
But it didn't seem worth it.
>
> Whatever. It's bikeshedding - what would probably be more important
> would be to get this into linux-next so that we find out whether there
> are any compile issues with it on other platforms or compiler
> versions.
>
> Linus
>
next prev parent reply other threads:[~2011-11-24 0:37 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-23 23:46 [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used David Daney
2011-11-23 23:46 ` David Daney
2011-11-23 23:46 ` [PATCH v3 1/2] kernel.h: Add BUILD_BUG() macro David Daney
2012-01-17 5:52 ` [PATCH] mips: remove custom BUILD_BUG() Eric Dumazet
2012-01-17 8:28 ` Ralf Baechle
2012-01-17 8:34 ` Eric Dumazet
2011-11-23 23:46 ` [PATCH v3 2/2] hugetlb: Replace BUG() with BUILD_BUG() for dummy definitions David Daney
2011-11-23 23:57 ` [PATCH v3 0/2] Stop some of the abuse of BUG() where compile time checks should be used Linus Torvalds
2011-11-24 0:37 ` David Daney [this message]
2011-11-24 10:24 ` David Howells
2011-11-24 18:31 ` Linus Torvalds
2011-11-28 17:03 ` David Daney
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=4ECD91E4.5090504@gmail.com \
--to=ddaney.cavm@gmail.com \
--cc=Andrew.Pinski@caviumnetworks.com \
--cc=akpm@linux-foundation.org \
--cc=david.daney@cavium.com \
--cc=dhowells@redhat.com \
--cc=dm.n9107@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ralf@linux-mips.org \
--cc=rientjes@google.com \
--cc=torvalds@linux-foundation.org \
/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.