hw: no assert checks by default, enable opt-in

fix #528
This commit is contained in:
Martin Stein 2013-09-06 10:29:06 +02:00 committed by Norman Feske
parent 3070af9194
commit 2223e72c7f

View File

@ -17,18 +17,30 @@
/* Genode includes */
#include <base/printf.h>
enum { CHECK_ASSERTIONS = 0 };
/**
* Assert a condition
* Make an assertion
*
* \param expression Expression that must be true
* \param expression statement that must be true
*
* Use this macro as if it could always be empty as well.
* I.e. it should not be used with expressions that are relevant
* to the protection against another, untrusted PD or expressions
* that contain mandatory function calls! A good rule of thumb
* is to use it only for the protection of a component against
* a PD-local interface misuse that can't be avoided due to language
* constraints (e.g. inaccuracy of integer ranges).
*/
#define assert(expression) \
do { \
if (!(expression)) { \
PERR("Assertion failed: "#expression""); \
PERR(" File: %s:%d", __FILE__, __LINE__); \
PERR(" Function: %s", __PRETTY_FUNCTION__); \
while (1) ; \
if (CHECK_ASSERTIONS) { \
if (!(expression)) { \
PERR("Assertion failed: "#expression""); \
PERR(" File: %s:%d", __FILE__, __LINE__); \
PERR(" Function: %s", __PRETTY_FUNCTION__); \
while (1) ; \
} \
} \
} while (0) ;