
Dear Simon Glass,
In message 1308870873-32540-1-git-send-email-sjg@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@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