[U-Boot] [PATCH v2] Add assert() for debug assertions

Wolfgang Denk wd at denx.de
Fri Jun 24 07:33:30 CEST 2011


Dear Simon Glass,

In message <1308870873-32540-1-git-send-email-sjg at chromium.org> you wrote:
> assert() is like BUG_ON() but compiles to nothing unless DEBUG is defined.
> This is useful when a condition is an error but a board reset is unlikely
> to fix it, so it is better to soldier on in hope. Assertion failures should
> be caught during development/test.
> 
> It turns out that assert() is defined separately in a few places in U-Boot
> with various meanings. This patch cleans up some of these.
> 
> Build errors exposed by this change (and defining DEBUG) are also fixed in
> this patch.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> V2:
> * Changed macros so that all code is compiled even if DEBUG is disabled
...
> +#define assert(x)	\
> +	({ if (!(x) && _DEBUG) \
> +		printf("Assertion failure '%s' %s line %d\n", \
> +			#x, __FILE__, __LINE__); })

Can we please use the same message format as used by assert(3) ?
Afaict they use "%s%s%s:%u: %s%sAssertion `%s' failed.".

Also, to save on memory footprint (frequent repetition of the common
string "Assertion failed") we should probably provide a separate
function for this (cf. /usr/include/assert.h).

Finally, should the assert() not result in some termination or hang of
U-Boot, like assert(3) is doing?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"What the scientists have in their briefcases is terrifying."
- Nikita Khrushchev


More information about the U-Boot mailing list