On Thursday 23 May 2013, Geert Uytterhoeven wrote: > > The problem is: trying to fix that will mean the result is a larger > > kernel than if you just do the usual arch-implemented thing of placing > > an defined faulting instruction at the BUG() site - which defeats the > > purpose of turning off CONFIG_BUG. > > Is __builtin_unreachable() working well these days? >
Hmm, I just tried the trivial patch below, which seemed to do the right thing. Needs a little more investigation, but that might actually be the correct solution. I thought that at some point __builtin_unreachable() was the same as "do {} while (1)", but this is not the case with the gcc I was using -- it just tells gcc that we don't expect to ever get here. Signed-off-by: Arnd Bergmann <a...@arndb.de> diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 7d10f96..9afff7d 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h @@ -108,11 +108,11 @@ extern void warn_slowpath_null(const char *file, const int line); #else /* !CONFIG_BUG */ #ifndef HAVE_ARCH_BUG -#define BUG() do {} while(0) +#define BUG() __builtin_unreachable () #endif #ifndef HAVE_ARCH_BUG_ON -#define BUG_ON(condition) do { if (condition) ; } while(0) +#define BUG_ON(condition) do { if (condition) __builtin_unreachable(); } while(0) #endif #ifndef HAVE_ARCH_WARN_ON ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel